2
所以我对球拍相当缺乏经验,但我正在写一个解释器。球拍 - 封关和封袋
我一直无法找到关于闭包究竟是什么的洞察,或者如何定义/解释“应用闭包”或“闭包”。
我写只是一个价值的解释与比赛等
任何帮助将不胜感激。
鉴于例如,从类 -
(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))])))
请阅读计算机程序的结构和解释,第4章介绍解释器,它会解释所有你需要知道的。 –