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