Dans kawa interpeter cela fonctionne En Guile il n'a pas, parce que ce code
(define (f x) (define a x) (define b a) b)
est ÉTENDU pour
(define (f x) (letrec ((a x) (b a)) b))
Et vous ne pouvez pas accéder à a
avant assignons. letrec
ne fonctionnera pas pour les définitions non-fonction, par exemple:
(letrec ((x 5)
(y x))
y)
Vous pouvez utiliser let*
insted
(define (f x) (let* ((a x) (b a)) b))
Dans ce code
(define (f x) (define a x) (define (b) a) (b))
Dans la procédure b vous accédez à un varible quand c'est déjà défini.
Cela fonctionne. Votre système signale-t-il une erreur? –
Quelqu'un peut-il reformuler une question? – pramodc84