【发布时间】:2020-03-25 18:53:34
【问题描述】:
我有一个judgement,合同如下:
(define-judgment-form DynamicLam
#:mode (down I I O O)
#:contract (down Γ e Γ e)
[----------------"Lambda"
(down Γ_0 z_0 Γ_0 z_0)]
;; rest of the code ...
)
当我运行这个时:
(define empty (term ()))
(redex-match? DynamicLam Γ empty)
(redex-match? DynamicLam e lam1^*)
(redex-match? DynamicLam z lam1^*)
(judgment-holds (down empty lam1^* empty lam1^*))
我回来了:
#t
#t
#t
。 . down:判断输入值与其合约不匹配; (由_表示的未知输出值) 合约:(下Γ e Γ e) 值:(下空 lam1^* _ _)
但这没有意义,因为我上面明明用redex-match?来测试:
-
empty匹配Γ -
lam1^*匹配e - 此外,
lam1^*匹配z。
我错过了什么? #:contract 的含义不仅仅是匹配 Γ e Γ e 吗?
【问题讨论】: