【问题标题】:How to test lambda functions?如何测试 lambda 函数?
【发布时间】:2016-01-03 23:08:25
【问题描述】:

假设我们有一种不支持数字或布尔值的编程语言:lambda 是它提供的唯一值。

教会数字使用 lambdas 来创建数字的表示。这个想法与自然数的函数表示密切相关,即有一个表示“零”的自然数和一个返回给定自然数的后继的函数“succ”。

(define zero (lambda (f) (lambda (x) x)))

(define (add-1 n)
  (lambda (f) (lambda (x) (f ((n f) x)))))

如果我有另一个lambda

(define pluss4 (lambda(x) (+ x 4))

我可以像这样测试它:(pluss4 0),我看到答案是4

如何测试教堂数字并看到一些结果?

【问题讨论】:

    标签: lambda scheme


    【解决方案1】:

    要将教堂编号转换为整数,您只需像这样应用它:

    (define (add1 n) (+ n 1))         ; In SICP it's called 1+
    ((zero add1) 0)                   ; ==> 0
    (((add-1 (add-1 zero)) add1) 0)   ; ==> 2
    

    你可以把它变成一个程序:

    (define (church->int x)
      ((x add1) 0))
    
    (church->int zero)                  ; ==> 0
    (church->int (add-1 (add-1 zero)))  ; ==> 2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-26
      • 2019-07-28
      • 2018-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多