【发布时间】:2015-10-22 12:50:32
【问题描述】:
在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)))))))))
这是简化的:
(define rember
(lambda (a lat)
(cond
((null? lat) (quote ()))
((eq? (car lat) a) (cdr lat))
(else (cons (car lat)
(rember a (cdr lat)))))))
据我所知,主要区别在于该功能已从两个 conds 各问一个问题变为一个 conds 问两个问题。
函数的参数是原子“a”和列表“lat”。
这是第一次,除了密密麻麻的前言之外,本书引用了“结构”这个词。在我看来,到目前为止,“结构”一词的定义是可以解释的。
有人问过这个exact question here before,但我无法回答。为什么两个条件结构与列表的结构一致或不一致?一份清单,在我看来,根本就没有任何条件!
条件不等于Scheme中的问题吗?也许我误解了条件是什么,这可能是我沮丧的合理根源。无论如何,对此的任何澄清将不胜感激!谢谢!
【问题讨论】:
标签: scheme structure conditional-statements racket the-little-schemer