Donc je suis assez inexpérimenté avec Racket mais j'écris un interprète.Raquette - faire la fermeture et appliquer la fermeture
J'ai été incapable de trouver un aperçu de ce qu'est exactement une fermeture, ou comment "appliquer-fermeture" ou "faire-fermeture" serait défini/expliqué.
J'écris juste valeur d'interprète avec correspondance, etc.
Toute aide serait grandement appréciée.
exemple de la classe Compte tenu -
(define value-of
(lambda (exp env)
(match exp
[`,b #:when (boolean? b) b]
[`,n #:when (number? n) n]
[`(zero? ,n) (zero? (value-of n env))]
[`(sub1 ,n) (sub1 (value-of n env))]
[`(* ,n1 ,n2) (* (value-of n1 env) (value-of n2 env))]
[`(if ,test ,conseq ,alt) (if (value-of test env)
(value-of conseq env)
(value-of alt env))]
[`(begin2 ,e1 ,e2) (begin (value-of e1 env) (value-of e2 env))]
[`(random ,n) (random (value-of n env))]
[`,y #:when (symbol? y) (apply-env env y)]
[`(lambda (,x) ,body) (make-closure x body env)]
[`(,rator ,rand) (apply-closure (value-of rator env)
(value-of rand env))])))
Veuillez lire la Structure et l'interprétation des programmes informatiques, le chapitre 4 traite des interprètes et il vous expliquera tout ce que vous devez savoir. –