我想使用声明的语法自动判断参数 除了作为类型构造函数给出的那个。例如,
postulate P : ℕ → ℕ → Set
data Silly : Set where
goo : (n : ℕ) → Fin n → (m : ℕ) → Fin m → P n m → Silly
在这里,我希望在P n m
和n
参数之间出现证明m
,但这不可能因为两者都需要声明它是表达。因此,我们使用语法声明:
syntax goo n i m j pf = i ⟵[ n , pf , m ]⟶ j
现在,我们可以手写了
want-to-use-syntax-in-pattern-matching : Silly → Set
want-to-use-syntax-in-pattern-matching (i ⟵[ n , pf , m ]⟶ j) = ℕ
这样可以正常使用,但是当我通过C-c C-c
进行大意分割时,它会使用goo
而不是我的语法。有没有办法让case拆分使用我声明的语法?
( 顺便说一句,使用
syntax goo n i m j pf = i ─[ n , pf , m ]⟶ j
失败,─
\---
)
答案 0 :(得分:1)
如今,如果Agda不在范围内,则左侧的Agda重塑模式 这样就可以了。