主要观点:作者在研究recursion-schemes,思考能否将其用于 lambda 演算,最终得出相关实现。
关键信息:
- 定义了
LambdaF
函子和Lambda
固定点类型,用于表示 lambda 演算的项。 - 决定将项求值为
suspended computation
,定义了Value
数据类型来表示求值结果。 - 编写了
evalAlgebra
代数,用于处理LambdaF
的各种情况,实现了 lambda 演算的求值。 - 定义了
EnvM
新类型,满足特定的MonadReader
约束,用于求值Lambda
。 - 给出了
SKI
组合子的定义,并验证了其正确性。
重要细节: - 使用 de-Bruijn 索引简化表示。
evalAlgebra
中对抽象体的处理,将其求值为m (Value m)
并放入闭包。EnvM
的定义和实例,用于满足求值的约束条件。- 示例中对
k
和s
组合子的求值验证。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。