Un classico esercizio di programmazione è scrivere un interprete Lisp / Scheme in Lisp / Scheme. La potenza della lingua completa può essere sfruttata per produrre un interprete per un sottoinsieme della lingua.
Esiste un esercizio simile per Haskell? Vorrei implementare un sottoinsieme di Haskell utilizzando Haskell come motore. Ovviamente si può fare, ma ci sono risorse online disponibili da consultare?
Ecco il retroscena.
Sto esplorando l'idea di utilizzare Haskell come linguaggio per esplorare alcuni dei concetti in un corso di Discrete Structures che sto insegnando. Per questo semestre ho scelto Miranda , una lingua più piccola che ha ispirato Haskell. Miranda fa circa il 90% di quello che vorrei che facesse, ma Haskell fa circa il 2000%. :)
Quindi la mia idea è di creare un linguaggio che abbia esattamente le caratteristiche di Haskell che vorrei e che non permetta tutto il resto. Man mano che gli studenti progrediscono, posso "attivare" selettivamente varie funzionalità una volta acquisite le nozioni di base.
I "livelli linguistici" pedagogici sono stati utilizzati con successo per insegnare Java e Scheme . Limitando ciò che possono fare, puoi impedire loro di spararsi ai piedi mentre stanno ancora padroneggiando la sintassi e i concetti che stai cercando di insegnare. E puoi offrire messaggi di errore migliori.