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