Классическое программирование состоит в том, чтобы написать интерпретатор Lisp/Scheme в Lisp/Scheme. Полномочия полного языка можно использовать для создания интерпретатора для подмножества языка.
Есть ли подобное упражнение для Haskell? Я хотел бы реализовать подмножество Haskell, используя Haskell в качестве движка. Конечно, это можно сделать, но есть ли онлайн-ресурсы, доступные для просмотра?
Здесь предыстория.
Я изучаю идею использования Haskell в качестве языка для изучения некоторых концепций в курсе Discrete Structures, который я преподаю. В этом семестре я остановился на Miranda, меньшем языке, который вдохновил Haskell. Миранда делает около 90% того, что я хотел бы сделать, но Haskell делает около 2000%.:)
Итак, моя идея - создать язык, который имеет именно те функции Haskell, которые я бы хотел и запретил все остальное. По мере продвижения студентов я могу выборочно "включать" различные функции, когда они освоили основы.
Педагогические "языковые уровни" были успешно использованы для обучения Java и Scheme. Ограничивая то, что они могут сделать, вы можете помешать им стрелять в ногу, пока они все еще осваивают синтаксис и концепции, которые вы пытаетесь учить. И вы можете предложить более эффективные сообщения об ошибках.