Как напечатать тип выражения в Фреге
В интерактивную оболочку и (онлайн) REPL могу войти
:type 1
выяснить тип выражения "1". Есть ли какая-либо функция, которую я могу использовать из кода для достижения того же эффекта?
1 ответ
Решение
В это время нет простого способа сделать это.
Однако сам REPL написан на Фреге, так что это, безусловно, возможно.
"Хитрость" заключается в создании полной программы, например,
module Foo where { x = 1 }
и запустить его через первые проходы компилятора, вплоть до прохода проверки типа. После этого можно запросить таблицу символов для символа верхнего уровня x
и его тип.