将列表([a])转换为类型级长度索引列表

时间:2017-11-15 19:21:20

标签: haskell

我对Haskell缺乏经验,但基本上我已经开始使用DataKinds和GADT了。我有一个GADT代表一个"知道"它的长度:

data NSL :: N -> * -> * where
Null :: NSL 'Zero a
More :: a -> NSL n a -> NSL ('Incr n) a

是从自然数据表示

创建的
data N :: * where
    Zero :: N
    Incr :: N -> N

所以我的问题是,如何创建一个函数

fromList :: [a] -> NSL n a

我尝试过使用可折叠和类似的想法,但我无法完全理解它。

0 个答案:

没有答案