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) 删除函数层。