Можно ли сгенерировать код автоматически, учитывая сигнатуру типа Haskell?

То, что сказано в заголовке. Если я напишу сигнатуру типа, возможно ли алгоритмически сгенерировать выражение, имеющее эту сигнатуру?

Кажется правдоподобным, что это возможно сделать. Мы уже знаем, что если тип является особым-случаем сигнатуры типа библиотечной функции, Hoogle может найти эту функцию алгоритмически. С другой стороны, многие простые проблемы, связанные с общими выражениями, на самом деле неразрешимы (, например, невозможно узнать, делают ли две функции одно и то же ), так что маловероятно, что это одна из них.

Вероятно, дурной тон задавать сразу несколько вопросов, но я хотел бы знать:

  • Можно ли это сделать?

  • Если да, то как?

  • Если нет, то существуют ли какие-либо ограниченные ситуации, когда это становится возможным?

  • Вполне возможно, что два разных выражения имеют сигнатуру одного и того же типа. Сможете ли вы вычислить все из них? Или даже некоторых из них?

  • Есть ли у кого-нибудь работающий код, который делает это на самом деле?

27
задан MathematicalOrchid 18 April 2012 в 08:39
поделиться