Agda的记录和instance
关键字的混合使我们的行为类似于Haskell的类型类。此外,忽略instance
关键字,我们可以为同一类型设置多个实例 - 这是Haskell无法做到的。
我正处于需要Haskell的单实例要求的地步,但在Agda中。 是否有编译器选项或某些技巧/启发式来强制执行此操作?
现在我采取的方法是,
record Yo (n : ℕ) : Set where
field
sem : (some interesting property involving n)
open Yo {{...}}
postulate UniqueYo: ∀ {n} (p q : Yo n) → p ≡ q
然而,每当我实际使用UniqueYo
时,缺乏计算会使我的目标充满...| UniqueYo p p
之类的内容,我更喜欢...| refl
或完全重写为普通形式。< / p>
感谢任何帮助!