【发布时间】:2016-06-26 03:09:06
【问题描述】:
这是来自 Simply Scheme 的代码(代码 here),学生应该在我们进行练习时加载和使用它。 (注意:我是一个只为自己做这件事的人。)
(define first
(let ((pair? pair?)
(char->word char->word)
(string-ref string-ref)`
(word->string word->string)
(car car)
(empty? empty?)
(whoops whoops)
(word? word?))
(define (word-first wd)
(char->word (string-ref (word->string wd) 0)))
(lambda (x)
(cond ((pair? x) (car x))
((empty? x) (whoops "Invalid argument to FIRST: " x))
((word? x) (word-first x))
(else (whoops "Invalid argument to FIRST: " x))))))
我已经足够了解let和lambda在这个函数中的一般用法,但我不明白为什么let表单中的每个支持函数(一些自制的,一些电池-included Scheme) 正在重复,例如,(pair? pair?) 和 (car car)。为什么这些在let 中被准重新分配?
【问题讨论】:
标签: scheme