Un ejercicio clásico de programación consiste en escribir un intérprete Lisp/Scheme en Lisp/Scheme. El poder del lenguaje completo se puede aprovechar para producir un intérprete para un subconjunto del idioma.Escribir un intérprete Haskell en Haskell
¿Hay algún ejercicio similar para Haskell? Me gustaría implementar un subconjunto de Haskell usando Haskell como motor. Por supuesto, puede hacerse, pero ¿hay algún recurso en línea disponible para mirar?
Aquí está la historia de fondo.
Estoy explorando la idea de usar Haskell como un idioma para explorar algunos de los conceptos en un curso Discrete Structures que estoy enseñando. Para este semestre me he conformado con Miranda, un lenguaje más pequeño que inspiró a Haskell. Miranda hace aproximadamente el 90% de lo que me gustaría que haga, pero Haskell hace aproximadamente el 2000%. :)
Así que mi idea es crear un lenguaje que tenga exactamente las características de Haskell que me gustaría y no permite todo lo demás. A medida que los estudiantes progresan, puedo activar selectivamente varias funciones una vez que dominan los conceptos básicos.
Los "niveles de idioma" pedagógicos se han utilizado con éxito para enseñar Java y Scheme. Al limitar lo que pueden hacer, puede evitar que se peguen un tiro en el pie mientras aún dominan la sintaxis y los conceptos que intenta enseñar. Y puedes ofrecer mejores mensajes de error.
Tengo un dialecto de Haskell WIP implementado con Typing Haskell en Haskell como base. Hay una demostración aquí http://chrisdone.com/toys/duet-delta/ No está listo para el lanzamiento de código abierto público, pero podría compartir la fuente con usted si está interesado. –