Un exercice de programmation classique consiste à écrire un interpréteur Lisp / Scheme en Lisp / Scheme. La puissance de la langue complète peut être mise à profit pour produire un interprète pour un sous-ensemble de la langue.
Existe-t-il un exercice similaire pour Haskell? Je voudrais implémenter un sous-ensemble de Haskell en utilisant Haskell comme moteur. Bien sûr, cela peut être fait, mais existe-t-il des ressources en ligne à consulter?
Voici la trame de fond.
J'explore l'idée d'utiliser Haskell comme langage pour explorer certains des concepts d'un cours sur les structures discrètes que j'enseigne . Pour ce semestre, j'ai opté pour Miranda , une langue plus petite qui a inspiré Haskell. Miranda fait environ 90% de ce que j'aimerais qu'elle fasse, mais Haskell fait environ 2000%. :)
Mon idée est donc de créer un langage qui a exactement les fonctionnalités de Haskell que j'aimerais et qui interdit tout le reste. Au fur et à mesure que les élèves progressent, je peux "activer" de manière sélective diverses fonctionnalités une fois qu'ils maîtrisent les bases.
Des «niveaux de langage» pédagogiques ont été utilisés avec succès pour enseigner Java et Scheme . En limitant ce qu'ils peuvent faire, vous pouvez les empêcher de se tirer une balle dans le pied alors qu'ils maîtrisent encore la syntaxe et les concepts que vous essayez d'enseigner. Et vous pouvez offrir de meilleurs messages d'erreur.