【问题标题】:How to apply True/False operators in expressions如何在表达式中应用真/假运算符
【发布时间】:2021-08-09 19:13:58
【问题描述】:

我的 lambda 演算课程从未定义真/假运算符,并以我无法逆向工程的方式使用它们。这里有两个例子:

问题 1. 以下表达式的计算结果是什么?

(tru 2 3) (add 4) 2

答案:

  1. 2
  2. 3
  3. 4
  4. 6
  5. 8
  6. 10

我的尝试:(tru 2 3) 返回第一项,即 2。然后将 4 添加两次,总共得到 10。所以 6) 就是答案。

问题 2. 以下表达式的计算结果是什么?

fls succ plus 2 3

答案:

  1. 2
  2. 3
  3. 4
  4. 5
  5. 6

我的尝试:plus 2 3 返回 5。succ 5 返回 6。而 false 没有任何作用。所以答案是 5)。

我不太担心这些问题的答案,而是更愿意了解如何在任何表达式中使用tru fls。我只是不明白它们如何与数字一起使用。

【问题讨论】:

    标签: lambda-calculus


    【解决方案1】:
    tru = λt. λf. t
    
    tru v w
    = (λt.λf.t) v w by definition
    −→ (λf. v) w reducing the underlined redex
    −→ v reducing the underlined redex
    
    fls = λt. λf. f
    
    fls v w
    = (λt.λf.f) v w by definition
    −→ (λf. f) w reducing the underlined redex
    −→ w reducing the underlined redex
    

    source (page 5)

    【讨论】:

    • 那么 True 返回第一个词,而 False 返回第二个词?但是你如何处理fls 6,因为只有一个术语?
    猜你喜欢
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 2014-10-25
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    相关资源
    最近更新 更多