假设我在 Redex 中定义了以下内容:
(define-language L
[e ::= (λ x e) (e e) x]
[x ::= variable-not-otherwise-mentioned]
#:binding-forms
(λ x e #:refers-to x))
现在,我认为该表达式的(λ y x) x
意思是:
用(外大括号)替换出现的y
in x
(上述表达式中的大括号内)。x
既然没有y
in x
,答案应该是 just x
。然后(λ y x) x y
应该返回x y
。但:
(default-language L)
(term (substitute (λ y x) x y))
'(λ y«0» y)
为什么它返回一个函数?是什么y<<0>>
意思?我误会了term (substitute ..)
吗?
我也不明白这个结果:
(term (substitute (λ y x) x true))
'(λ y«1» true)
有人可以帮我破译这个吗?我是 Racket/Redex 的新手。