小编s9_*_*9_C的帖子

Little Schemer:什么是函数或参数的结构?

The Little Schemer的第3章中,关于为什么我们不立即简化rember函数的问题的答案是"因为那时函数的结构与其参数的结构不一致".我无法理解函数的结构是什么,参数的结构是什么,以及它们之间的区别.

这是未简化的版本:

(define rember
  (lambda (a lat)
    (cond
      ((null? lat) (quote ()))
      (else (cond
        (( eq? (car lat) a) (cdr lat))
        (else (cons (car lat)
          (rember a
            ( cdr lat)))))))))
Run Code Online (Sandbox Code Playgroud)

这是简化的:

(define rember
  (lambda (a lat)
    (cond
      ((null? lat) (quote ()))
      ((eq? (car lat) a) (cdr lat))
      (else (cons (car lat)
               (rember a (cdr lat)))))))
Run Code Online (Sandbox Code Playgroud)

据我所知,主要的不同之处在于,这个功能已经从两个问题变成了一个问题,每个问题一个问题,一个问题得到两个问题.

函数的参数是原子"a"和列表"lat".

这是第一次在密集书面的前言之外,书中引用了"结构"这个词.在我看来,到目前为止,"结构"一词的定义可以解释.

之前有人问过这个确切的问题,但我无法回答这个问题.为什么两个cond结构与列表的结构重合或不重合?在我看来,清单根本没有任何条件!

不是条件相当于Scheme中的问题吗?也许我误解了条件是什么,这可能是我沮丧的合理根源.无论如何,对此的任何澄清将非常感谢!谢谢!

scheme structure conditional-statements the-little-schemer racket

8
推荐指数
1
解决办法
425
查看次数