|
|
1
6
过程概述注释可能应该遵循RnRS文档的样式,因此只需按原样向过程中添加注释 ;;; Procedure: display-n NUM ...
;; Output each argument to the screen in the order they are provided.
(define
display-n (lambda nums
(letrec ((display-n-inner (lambda (nums)
(display (car nums))
(if (not (equal? (cdr nums) '()))
(display-n-inner (cdr nums))))))
(display-n-inner nums))))
DISPLAY-N-INNER的参数称为NUMS并不是什么大问题,因为这个过程很短,DISPLAY-N只是直接将NUMS交给它。”不过,DISPLAY-N-INNER这个名字有点蹩脚。你可以给它一些更具语义的东西,或者给它一个简单的名字,比如“ITER”或“LOOP”。
现在是关于
程序的一部分。第一,
(define (display-n . nums)
(define (iter nums)
(if (null? nums)
#t ; It doesn't matter what it returns.
(begin (display (car nums))
(iter (cdr nums)))))
(iter nums))
但尽管如此,我要说的是,过程本身并不是完成它所做任务的最佳方式,因为它过于关注遍历列表的细节。相反,您将使用更抽象的FOR-EACH方法来完成这项工作。 (define (display-n . nums) (for-each display nums))
|
|
|
2
4
一些随机注释:
|
|
|
3
2
我遵循一种类似于此处所述的方法: http://www.cc.gatech.edu/computing/classes/cs2360/ghall/style/commenting.html 注意:这是用于公共Lisp的。
|
|
|
4
0
我认为一个很好的开始就是用一句话来描述函数的作用
|