小编rus*_*lmc的帖子

Haskell 单例:typelits 包

我很难让编译器相信我的类型是正确的。Nat对于带有Zero和构造函数的常规\n 来说,Succ这非常简单(目标是replicate为长度索引列表编写函数(Vect ) 编写函数):

\n\n
replicate' :: SNat n -> a -> Vect n a\nreplicate' SZero _ = Nil\nreplicate' (SSucc n) a = a :> replicate' n a\n
Run Code Online (Sandbox Code Playgroud)\n\n

但经常Nat非常慢。

\n\n

因此,在单例库中有一个镜像 GHC.TypeLits 的包,以实现更快的 Nats。\n但我无法使上面的示例与它一起使用:

\n\n
sameNat :: forall a b. (KnownNat a, KnownNat b) => SNat a -> SNat b -> Maybe (a :~: b)\nsameNat x y\n  | natVal (Proxy :: Proxy a) == natVal (Proxy :: Proxy …
Run Code Online (Sandbox Code Playgroud)

haskell dependent-type template-haskell singleton-type

5
推荐指数
1
解决办法
540
查看次数