主要观点:term-lisp 是一种用于术语处理的语言,受 Pie、Haskel、Agda 等启发,处于早期阶段,很多功能可能不完善。
关键信息:
- 基于术语重写,不支持变量,函数是描述如何用一个术语替换另一个术语的规则,如布尔值的定义。
- 支持一等模式匹配,可让函数返回模式,如 if 表达式的定义。
- 采用惰性求值,避免函数执行副作用,如 assertEqual 函数。
- 基于原子和列表,pair 是可定义和使用的数据类型之一。
- 函数定义通过参数和表达式用等号分隔,支持多种模式匹配特性,如解构参数、值匹配、多实现、传递函数等。
重要细节: - 在 term-lisp 中,未定义的术语不是错误,只是未定义的术语。
- 功能性应用如 (car (cons foo bar)) 求值为 foo 。
- 构造未定义函数应用的表达式会创建新的数据类型/构造器,如 Pair foo bar 。
- 运行 term-lisp 需在项目根目录运行
node termlisp.js <file>
,会评估 prelude 模块和提供的文件并进入 REPL 模式。还可阅读 the prelude 。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。