Я хотел бы программно генерировать случайные функции Haskell и оценивать их. Мне кажется, что единственный способ сделать это состоит в том, чтобы в основном генерировать код Haskell программно и запускать его с помощью API GHC или внешнего процесса, возвращая строку и анализируя ее обратно в тип данных Haskell. Это правда?
Мое рассуждение заключается в следующем. Функции полиморфны, поэтому я не могу использовать Typeable. Что еще более важно, даже если я пишу свой собственный контролер типов и аннотирую каждую функцию с ее типом, я не могу доказать компилятору Haskell, что моя проверка правильности верна. Например, когда я вывожу две функции из гетерогенного набора функций и применяю их один к другому, мне нужно предоставить компилятору гарантию того, что функция, которую я использую для выбора этих функций, выбирает только функции с соответствующими типами. Но нет никакого способа сделать это, не так ли?