我很想了解 arithmoi 包中幻象类型的使用(https://hackage.haskell.org/package/arithmoi-0.8.0.0)。它有助于检查我是否正在使用正确的残基类 ( Z/nZ
)。
有问题的幻像类型是data Mod (n :: Nat) = Mod Natural
,据我所知,构造函数没有导出。但是 的构造函数SomeMod
是导出的,所以我想我必须用它来构造::Mod n
变量。此外,可以阅读文档,但我不能使用它。
case modulo n m of
SomeMod k -> process k -- Here k has type Mod m
InfMod{} -> error "impossible"
所以我尝试了:
foo :: KnownNat m => Nat -> Nat -> Mod m
foo n m = case modulo n m of
(SomeMod k) -> k
otherwise -> error "some error"
我收到一个关于变量 m, m1 的错误,它正在逃逸其范围。我有点疑惑。