2 个不稳定版本
| 0.2.0 | 2022年4月18日 |
|---|---|
| 0.1.0 | 2022年4月18日 |
#598 in 编程语言
46KB
897 行
Aude
一个使用类似 Lisp 的函数式编程语言的自动微分求解器
=== Aude 0.2 ===
Type `help` for more information.
> mul
mul
ty: (fun (tup f64 f64) f64)
D: (lam (tup f64 f64) (tup mul($0) (lin_lam (tup f64 f64) add((tup mul((tup fst(f64)(f64)($0) fst(f64)(f64)($1))) mul((tup snd(f64)(f64)($0) snd(f64)(f64)($1))))))))
要在终端运行 Aude,请输入
cargoinstall --exampleaude aude
然后,要运行
aude
参考文献
设计
Aude 使用类似 Lisp 的语法,以避免在与其他编程语言之间转换时的痛苦。
例如,而不是使用 f64 -> f64,Aude 使用 (ty f64 f64)。
函数应用使用语法 <function>(<argument>),例如 sin(0)。
变量使用 De Bruijn 索引,例如 $0 指的是 lambda 参数。
所有操作符都接受 2 个参数,例如 (fun f64 f64)。
特性
| 函数 | 描述 |
|---|---|
| add | 加法 |
| cos | 余弦(三角函数) |
| fst | 元组第一个组件 |
| fst_par | 并行第一个组件 |
| id | 恒等函数 |
| neg | 否定 |
| mul | 乘法 |
| sin | 正弦(三角函数) |
| snd | 元组第二个组件 |
| snd_par | 并行第二个组件 |
| Op | 描述 | 示例 |
|---|---|---|
| comp | 组合函数 | g.f= (comp g f) |
| lin_comp | 组合线性函数 | g.f= (lin_comp g f) |
| fun | 函数类型 | f64 -> f64 = (funf64 f64) |
| lin | 线性函数类型 | f64 -of64 = (linf64 f64) |
| lam | lambda 表达式 | \x:f64.x= (lamf64 $0) |
| lam_lin | 线性 lambda 表达式 | \x:f64.x= (lin_lamf64 $0) |
| par | 并行元组 | f x g= (par f g) |
| tup | 元组 | (f,g) = (tup f g) |
| ty | 类型 | x: f64 = (ty xf64) |
依赖项
~250KB