微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何以“普通”英语阅读以下表达

如何解决如何以“普通”英语阅读以下表达

我正在阅读《从第一原理开始的Haskell编程》一书,尽管作者试图详细解释如何简化表达式,但我仍然难以理解如何在提供的示例中阅读某些表达式。

我们假设以下表达式:

(λx.x)然后,如果我正确理解,可以理解为:“一个lambda函数,它接受参数x并返回(基本上将.转换为“ returns”),值x

现在假设我们具有以下表达式:

(λxy.xy),我们如何用普通英语阅读该表达?为了使其更加复杂,作者然后将(λxy.xy)扩展到(λxy.xy)(λz.a) 1。这些za在以上表达式中如何显示?我希望,如果我可以将表达式正确地转换为简单的英语,就能理解za的来源。

解决方法

在lambda演算中,彼此相邻的值表示将第一个值作为函数调用,而将第二个值作为参数调用。 (λxy.xy)(λx.λy.xy)的简写,表示函数需要一个参数x然后是参数y,并使用参数y调用x。 (如果您想知道为什么会有一个函数返回一个函数,那是由于currying造成的)。要弄清楚(λxy.xy)(λz.a) 1的含义,我们必须逐步进行:

  • 撤消简写:(λx. λy. xy) (λz. a) 1
  • 应用第一个功能(λx):(λy. (λz. a) y) 1
  • 应用第二个功能(λy):(λz. a) 1
  • 应用第三个功能(λz):a

因此,我们最终得到了a(可能是一个外部定义的常量)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。