一个经典的编程练习是在 Lisp/Scheme 中编写一个 Lisp/Scheme 解释器。可以利用完整语言的强大功能为该语言的子集生成解释器。
Haskell 有类似的练习吗?我想使用 Haskell 作为引擎来实现 Haskell 的一个子集。当然可以,但是有什么在线资源可以看吗?
这是背景故事。
我正在探索使用 Haskell 作为一种语言来探索我正在教授的离散结构课程中的一些概念的想法。这个学期我选择了Miranda,这是一种启发 Haskell 的小语言。Miranda 做了大约 90% 我希望它做的事情,但 Haskell 做了大约 2000%。:)
所以我的想法是创建一种语言,它完全具有我想要的 Haskell 功能,并且不允许其他所有功能。随着学生的进步,一旦他们掌握了基础知识,我就可以选择性地“打开”各种功能。
教学“语言级别”已成功用于教授Java和Scheme。通过限制他们可以做的事情,您可以防止他们在他们仍在掌握您尝试教授的语法和概念时自欺欺人。您可以提供更好的错误消息。