7 个稳定版本

1.0.6 2022年6月29日
1.0.5 2022年6月6日
1.0.4 2022年4月10日
1.0.1 2022年4月9日
1.0.0 2022年4月5日

#446 in 编程语言

MIT 许可证

50KB
1K SLoC

利西亚

用 Rust 实现的 Lisp

名称

名称来自氧化锂的另一种称呼

函数

  • quote 返回其给定内容,用于您不想评估某物时
  • exit 退出 Lisp 解释器,可以提供退出码
  • =set 设置变量
  • def 定义全局变量
  • defunc 定义全局函数
  • eval 评估给定的对象及其返回值
  • print 显示对象
  • read 读取一行到对象中
  • include 读取文件并评估它,返回最后一个对象
  • while 当第一个参数不是 nil 时,评估其余部分
  • read 提示输入并将其转换为对象
  • func 创建一个函数
    • 用法
     (func (arg1 arg2)
     	(body)
     	(body)
     	return_value)
    
  • carfirst 获取点对中的第一个元素
  • cdrnext 获取点对中的第二个元素

数学函数

  • +add
  • -sub
  • *mul
  • /div
  • %mod
  • ==eq
  • !=ne

lib.rs:

这个软件包提供了一种在 Rust 程序中嵌入的 LISP 实现

支持在环境中提供 Rust 函数作为 LISP 函数

用法

此软件包位于 crates.io 上,您可以通过将 lithia 添加到您的项目 Cargo.toml 中的依赖项来使用它。

[dependencies]
lithia = "*"

示例:简单的REPL

let code = "(while t (print (eval (read))))".to_string()

let mut globals = HashMap::new();
let ret = Lisp::new(&mut globals)
.add_stdenv().unwrap()
.eval(&code);

依赖项

~2-3MB
~53K SLoC