如果简单,那么只需几句话就可以完全解释。可以对λ微积分进行此操作: λ演算是具有归约规则的语法(基本上是结构)(这意味着对特定模式的每次出现都会重复应用搜索/替换过程,直到不存在这种模式为止)。 语法: Term = (Term Term) | (λ Var . Term) | Var 归约规则: ((λ var body) term) -> SUBS(body,var,term) where `SUBS` replaces all occurrences of `var` by `term` in `body`, avoiding name capture. 例子: (λ a . a) -> (λ a a) ((λ a . (λ b . …
我正在看Jim Weirich的演讲,标题为“ 函数式编程历险记 ”。在本讲座中,他介绍了Y组合器的概念,该概念实质上是为高阶函数找到固定点的。 正如他提到的那样,动机之一是能够使用Lambda微积分来表达递归函数,从而保持Church的理论(可以使用Lambda微积分来计算任何可有效计算的理论)。 问题在于函数不能简单地这样调用自身,因为lambda演算不允许使用命名函数,即 n (x ,y)= x + yn(x,y)=x+yn(x, y) = x + y 不能使用名称“ ”,必须匿名定义:ñnn (x ,y)→ x + y(x,y)→x+y(x, y) \rightarrow x + y 为什么lambda演算具有未命名的函数很重要?如果命名函数违反了什么原则?还是我只是误解了吉姆的视频?