Return Scheme 中括号中的内容
Return something enclosed in parentheses in Scheme
我有以下一段代码用于教会数字的后继和前继:
考虑以下代码:
(define zero (lambda () '() )) ; Initialize Church numeral zero as nil
(define (succ x) (lambda () x)) ; Wraps x with another function and returns it
(define (pred x) (x)) ; "Unwraps" one shell function of x and returns it
(define one (succ zero)) ; gives me the Church numeral one
(pred one)
假设我在 pred 函数中做了以下更改:
(define (pred x) x)
返回x和(x)有什么区别? return (x) 在句法和逻辑上到底意味着什么?
函数
(define (pred x) x)
是恒等函数。该函数接受一个值并将其绑定到参数 x
。然后它计算返回原始值的主体 x
。
函数
(define (pred x) (x))
将一个值作为输入并将其绑定到参数 x
。
然后它评估正文 (x)
。表达式 (x)
表示不带参数调用(希望是一个函数)x
。
(pred (lambda () 42)) will evaluate to 42.
因此,在您的编码上下文中,(lamdda () x)
将函数层包装为一个值并 (x)
删除函数层。
我有以下一段代码用于教会数字的后继和前继: 考虑以下代码:
(define zero (lambda () '() )) ; Initialize Church numeral zero as nil
(define (succ x) (lambda () x)) ; Wraps x with another function and returns it
(define (pred x) (x)) ; "Unwraps" one shell function of x and returns it
(define one (succ zero)) ; gives me the Church numeral one
(pred one)
假设我在 pred 函数中做了以下更改:
(define (pred x) x)
返回x和(x)有什么区别? return (x) 在句法和逻辑上到底意味着什么?
函数
(define (pred x) x)
是恒等函数。该函数接受一个值并将其绑定到参数 x
。然后它计算返回原始值的主体 x
。
函数
(define (pred x) (x))
将一个值作为输入并将其绑定到参数 x
。
然后它评估正文 (x)
。表达式 (x)
表示不带参数调用(希望是一个函数)x
。
(pred (lambda () 42)) will evaluate to 42.
因此,在您的编码上下文中,(lamdda () x)
将函数层包装为一个值并 (x)
删除函数层。