lambda演算解释器
什么:
用C ++编写的小型lambda演算解释器。 它支持α转换和β减少,以及精确跟踪替换和重命名的输出。
如何:
支持标准的lambda演算语法,例如:
(λz.(((λx.(λy.x)) z) ((λx.(λy.x)) z)))
请注意,变量名称可以是多字符,因此必须用空格分隔。 支持用于多参数函数的语法糖:
λx y.x == λx.λy.x
还支持Haskell风格的lambda语法,因为没有人知道如何键入λ:
\x y -> x == \x -> \y -> x
还支持let绑定:
let S = \x y z -> x z (y z)
let K = \x y -> x
let I = \x -> x
S K K == I
如果使用了FLAG_VAR_REPLACEMENT标志(与:v切换),则解释器将尝试通过使用alpha等效性FLAG_
2023-01-17 17:32:04
157KB
C++
1