相关疑难解决方法(0)

使用TypeLits附加类型级编号列表

使用GHC.TypeLits,我们可以编写一个简单的类型级编号列表(或矢量).

> {-# LANGUAGE TypeOperators, KindSignatures, GADTs, DataKinds, ScopedTypeVariables #-}

> import GHC.TypeLits

> data Vec :: * -> Nat -> * where
>   VNil :: Vec e 0
>   (:-) :: e -> Vec e n -> Vec e (n+1)
Run Code Online (Sandbox Code Playgroud)

这是规范的矢量定义TypeLits.直观地说,追加操作应如下所示:

> vecAppend :: Vec e n -> Vec e m -> Vec e (n + m)
> vecAppend VNil vec = vec
> vecAppend (a :- as) vec = a :- vecAppend as vec …
Run Code Online (Sandbox Code Playgroud)

haskell

12
推荐指数
1
解决办法
533
查看次数

标签 统计

haskell ×1