Un ejercicio de programación clásico es escribir un intérprete Lisp / Scheme en Lisp / Scheme. Se puede aprovechar el poder del idioma completo para producir un intérprete para un subconjunto del idioma.
¿Existe un ejercicio similar para Haskell? Me gustaría implementar un subconjunto de Haskell usando Haskell como motor. Por supuesto que se puede hacer, pero ¿hay algún recurso en línea disponible para consultar?
Aquí está la historia de fondo.
Estoy explorando la idea de usar Haskell como lenguaje para explorar algunos de los conceptos en un curso de estructuras discretas que estoy enseñando. Para este semestre me he decidido por Miranda , un lenguaje más pequeño que inspiró a Haskell. Miranda hace aproximadamente el 90% de lo que me gustaría que hiciera, pero Haskell hace aproximadamente el 2000%. :)
Entonces mi idea es crear un lenguaje que tenga exactamente las características de Haskell que me gustaría y no permita todo lo demás. A medida que los estudiantes progresan, puedo "activar" de forma selectiva varias funciones una vez que dominan los conceptos básicos.
Los "niveles de lenguaje" pedagógicos se han utilizado con éxito para enseñar Java y Scheme . Al limitar lo que pueden hacer, puede evitar que se disparen en el pie mientras todavía dominan la sintaxis y los conceptos que está tratando de enseñar. Y puede ofrecer mejores mensajes de error.