La procédure suivante est valable dans les deux r6rs régime et Racket:Schéma/Racket: faire boucle ordre d'évaluation
;; 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)))
Je l'ai testé pour les deux r6rs et Racket et il ne fonctionne pas correctement, mais je ne Sachez que c'est sûr pour DrRacket.
Ma question est de savoir s'il est garanti que les expressions étape (dans ce cas (- x 1)
et (cons x lst)
) seront évalués en ordre. Si ce n'est pas garanti, alors ma procédure n'est pas très stable.
Je n'ai rien vu qui spécifie cela dans les normes pour l'une ou l'autre langue, mais je demande ici parce que quand j'ai testé cela a été évaulé dans l'ordre.
Editer: Merci! C'est très intéressant, je n'avais pas réalisé que ça fonctionnait de cette façon. – Cam