一个经典的编程练习是用Lisp / Scheme写一个Lisp / Scheme解释器。可以利用完整语言的强大功能来生成语言子集的解释器。
那么Haskell有没有类似的练习呢?我想使用Haskell作为引擎来实现Haskell的子集。当然这是可行的,但是否有任何在线资源可供参考呢?
以下是背景故事。
我正在探索使用Haskell作为一门离散结构课程中探索一些概念的语言。对于这个学期,我已经选择了Miranda,这是一种更小的语言,启发了Haskell。Miranda可以完成我想要做的90%,但Haskell可以完成2000%:)
因此,我的想法是创建一种具有恰好我想要的Haskell特性并禁止其他所有内容的语言。随着学生的进步,他们可以逐渐地“打开”各种特性,一旦他们掌握了基础知识。
已成功使用教学“语言级别”来教授Java和Scheme。通过限制他们的操作范围,可以在他们掌握正在教授的语法和概念时防止他们犯错。此外,还可以提供更好的错误消息。