lambda - Lambda 表达式简化为 NF
问题描述
我需要使用 Normal Order 将以下 Lambda 表达式简化为 Normal Form。这些是我的减少,但对我来说没有意义:
//First expression
(λf.λx.f(fx))(λy.+y1)(+ 2 3)
(λx.fx)(λy.+y1)(+ 2 3)
f(λy.+y1)(+ 2 3)
f(+(+ 2 3) 1)
f(+ 5 1)
f 6
//Second expression
λx. + ((λy.((λx.∗ xy) 2)) x) y)
+((λy.((λw.* wy) 2) w)
+((λw.* ww) 2)
+(* 2 2)
+ 4
我得到的两个NF都没有意义。第二个是 + 函数,它需要 2 个变量,但最终只有一个。
我将不胜感激任何建议和更正。
解决方案
1.
//First expression
(λf.λx.f(fx))(λy.+y1)(+ 2 3)
我认为您在这里的错误是认为可以减少第一项。我不认为它可以,所以立即开始将其应用于其他术语。
2.
//Second expression
λx. (+ ((λy.((λx.∗ xy) 2)) x) y)
为了减少这个开始,通过应用最里面的术语并重命名最后一个y
,你得到:
λx. (+ ((λy.(∗ 2y)) x) w)
然后继续:)
推荐阅读
- python - 为什么protobuf的内存比python中的普通dict+list小?
- json - 无法在 swift 中向 API 添加参数
- angular - 在动态 Angular 组件中导入模块和调用方法
- python - 如何使用python测试txt文件中的特定行
- python-3.x - Python Pandas:支持 25 小时的日期时间索引
- javascript - 如何处理 mapWith TransformationType 中的承诺?[@nartc/automapper]
- arrays - 第二个数组中的任何事件发生后 w 分钟内一个数组中的事件数
- python - 检查用户是否登录了firebase python
- wordpress - Wordpress wp.media 在对象中返回错误的图像大小
- c# - 如何使用 VS Code 在我的 .Net Core 项目中手动安装包/引用