Вопрос

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

Ядро GHC кажется слишком ориентированным на работу, тем более что одна из вещей, которые делает виртуальная машина, - это существенное изменение порядка оценки.Существуют ли какие-либо доступные промежуточные представления, которые более точно соответствуют лямбда-исчислению?

Это было полезно?

Решение

Внешнее ядро для GHC примерно настолько близко к лямбда-исчислению, насколько вы собираетесь получить, используя GHC. Здесь это прямая ссылка на тип выражения, если вы хотите сразу перейти к нему.

Другие советы

Раньше в EHC был такой поток между представлениями:

HS -> EH -> Ядро -> Ухмылка -> Глупый

Очевидно, что HS - это Haskell, EH менее приторный и используется программой проверки типов, Core - аналог ядра GHC, а Grin и Silly - более низкого уровня.

Существует статья, описывающая архитектуру EHC, написанная Джеруном Фоккером, откуда я позаимствовал приведенное выше, но, вероятно, она устарела (я не знаю, что EHC все еще использует глупое представление).Я думаю, что EHC предоставляет анализаторы и красивые принтеры для каждого из своих внутренних представлений, что было бы удобно.

Есть также York.Core от YHC, о котором, как я видел, люди отзываются более благосклонно, чем о GHC Core, но я не знаю, есть ли способ скомпилировать "современный" Haskell в York.Core.

Хм ... когда -либо слышал о Хаскелл ядра? Я не уверен, что вам нужно. Это какой -то оругалированный Haskell и по существу определяется в отчете Haskell. Я не уверен, это то, что вам нужно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top