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