Um exercício de programação clássico é escrever um interpretador Lisp / Scheme em Lisp / Scheme. O poder da linguagem completa pode ser aproveitado para produzir um intérprete para um subconjunto da linguagem.
Existe um exercício semelhante para Haskell? Eu gostaria de implementar um subconjunto de Haskell usando Haskell como motor. Claro que isso pode ser feito, mas há algum recurso online disponível para análise?
Aqui está a história de fundo.
Estou explorando a ideia de usar Haskell como uma linguagem para explorar alguns dos conceitos em um curso de Estruturas Discretas que estou ensinando. Para este semestre, escolhi Miranda , uma língua menor que inspirou Haskell. Miranda faz cerca de 90% do que eu gostaria que fizesse, mas Haskell faz cerca de 2000%. :)
Minha ideia é criar uma linguagem que tenha exatamente as características do Haskell que eu gostaria e não permita todo o resto. À medida que os alunos progridem, posso "ativar" seletivamente vários recursos, uma vez que tenham dominado o básico.
Os "níveis de linguagem" pedagógicos têm sido usados com sucesso para ensinar Java e Scheme . Ao limitar o que eles podem fazer, você pode evitar que dêem um tiro no próprio pé enquanto ainda estão dominando a sintaxe e os conceitos que você está tentando ensinar. E você pode oferecer mensagens de erro melhores.