3 个不稳定版本
0.2.1 | 2023 年 1 月 24 日 |
---|---|
0.2.0 | 2023 年 1 月 22 日 |
0.1.0 | 2023 年 1 月 21 日 |
674 在 编程语言 中排名
每月下载量 28 次
33KB
767 行代码 (行数)
Callum's Lisp
一个为在浏览器中使用 WASM 运行的 Lisp 解释器。
用法
您可以使用 +, -, *, / 执行简单的数值运算
(+ 1 2) => 3
(/ 5 2) => 2.5
(- 2) => -2
(/ 5) => 0.2
您可以使用 def
定义常量
(def x 3) => 3
x => 3
您可以使用 lambda
创建函数
(lambda (x) (+ x 1)) => <function>
(def add1 (lambda (x) (+ x 1))) => <unspecified>
(add1 3) => 4
所有内置函数和特殊形式的列表
特殊形式
(def name value)
:在当前环境中将名称绑定到值(lambda (bindings) expr)
或(λ (bindings) expr)
:创建一个函数(if cond do else)
:如果 cond 为真,则评估 do expr,否则评估 else expr
内置函数
+
,-
,*
,/
:简单的算术运算符exit
:退出,返回代码 0 或由参数提供的代码eval
:评估作为参数传递的表达式use
:评估当前环境中文件中包含的所有表达式putstr
:将字符串打印到 stdoutreadline
:从 stdin 读取一行equal?
:检查任意数量的值是否相等>
,>=
,<
,<=
:数字比较运算符list
:根据给定的参数创建一个列表list?
:如果参数是列表,则返回 true,否则返回 falseempty?
:如果参数是长度为 0 的列表,则返回 true,否则返回 falsecount
:如果参数是列表,则返回参数的长度
目标
优先级排序的目标
- 尾递归优化
- 宏定义
- 适当的错误处理
- 字符串
- 多精度数字
- 向量
- 结构体/枚举/联合类型
- 输入输出(打印、读取等)
依赖项
~1.6–2.5MB
~48K SLoC