我有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:判断输入值与其合约不匹配;(由_表示的未知输出值)合约:(down Γ e Γ e)值:(down empty lam1^* _ _)
但这没有意义,因为我redex-match?
上面明明用过来测试:
- 那
empty
匹配Γ
- 那
lam1^*
匹配e
- 而且那
lam1^*
匹配z
。
我错过了什么?#:contract
除了匹配之外,还有更多的含义Γ e Γ e
吗?