次の手順は、スキーム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)
どちらの言語の標準でもこれを指定するものは見当たりませんでしたが、テストしたときに順番に評価されたため、ここで質問しています。