不确定我是否理解匿名程序

Not sure if I understand anonymous procedures

(define (map2 liste1 liste2)
  (define (gj x y)
    (/ (+ x y) 2))
  (if (or (null? liste1) (null? liste2))
      '()
      (cons (gj (car liste1) (car liste2)) (map2 (cdr liste1) (cdr liste2)))))

过程 gj 是匿名过程吗,因为它在另一个过程中?

gj 不是匿名的,因为它有一个名称,恰好只在 map2.

范围内可见

匿名过程的例子是:

> ((lambda (x) (* 2 x)) 10)
   ^^^^^^^^^^^^^^^^^^^^
20

> (map (lambda (x) (+ x 1)) '(10 20 30))
       ^^^^^^^^^^^^^^^^^^^^
'(11 21 31)

没有名称,不能在定义它们的表达式后引用。

注意

(define (gj x y)
  (/ (+ x y) 2))

相同
(define gj
  (lambda (x y)
    (/ (+ x y) 2)))

所以这里的过程绑定到标识符 gj,因此它不再是匿名的。