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
我认为一个很好的开始就是用一句话来描述函数的作用
|
David J. · 这个基本的scheme函数有什么问题 2 年前 |
Asher · 如何使用DrRacket遵循简单方案手册 6 年前 |
Flux · 如何从MIT方案访问环境变量? 6 年前 |
Adam Morad · 方案反转值 6 年前 |
Adam Morad · 方案更改树值 6 年前 |
lightning_missile · 词法范围和共享对象 6 年前 |