【发布时间】:2009-09-18 17:19:49
【问题描述】:
一个经典的编程练习是用 Lisp/Scheme 编写一个 Lisp/Scheme 解释器。可以利用完整语言的强大功能为该语言的子集生成解释器。
Haskell 有类似的练习吗?我想使用 Haskell 作为引擎来实现 Haskell 的一个子集。当然可以完成,但是有什么在线资源可以查看吗?
这是背景故事。
我正在探索使用 Haskell 作为一种语言来探索我正在教授的 Discrete Structures 课程中的一些概念的想法。这个学期我选择了Miranda,这是一种启发了 Haskell 的小语言。 Miranda 做了大约 90% 我希望它做的事情,但 Haskell 做了大约 2000%。 :)
所以我的想法是创建一种语言,它完全具有我想要的 Haskell 功能,并且不允许其他所有功能。随着学生的进步,一旦他们掌握了基础知识,我就可以选择性地“开启”各种功能。
教学“语言水平”已成功用于教授Java 和Scheme。通过限制他们可以做的事情,您可以防止他们在他们仍在掌握您尝试教授的语法和概念时自欺欺人。并且您可以提供更好的错误消息。
【问题讨论】:
-
我有一个 WIP Haskell 方言,以在 Haskell 中键入 Haskell 作为基础。这里有一个演示 chrisdone.com/toys/duet-delta 它还没有准备好公开开源发布,但如果有兴趣我可以与你分享源代码。
标签: haskell functional-programming interpreter