以下过程在方案 r6rs 和 Racket 中都有效:
;; create a list of all the numbers from 1 to n
(define (make-nums n)
(do [(x n (- x 1)) (lst (list) (cons x lst))]
((= x 0)
lst)))
我已经对 r6rs 和 Racket 进行了测试,它确实可以正常工作,但我只知道 DrRacket 是肯定的。
我的问题是是否可以保证步骤表达式((- x 1)
在(cons x lst)
这种情况下)将按顺序进行评估。如果不能保证,那么我的程序就不是很稳定。
我没有在这两种语言的标准中看到任何具体说明,但我在这里问是因为当我测试它时,它是按顺序评估的。