相关疑难解决方法(0)

Haskell:在类型系统中指定列表的等长约束

在Haskell中,我经常有一个函数f,它接受一个列表并返回一个相等长度的列表:

f :: [a] -> [a]  -- length f(xs) == length xs
Run Code Online (Sandbox Code Playgroud)

同样,我可能有一个函数g,它接受两个长度相等的列表:

g :: [a] -> [a] -> ...
Run Code Online (Sandbox Code Playgroud)

如果fg上面键入,则如果不满足与长度相关的约束,则可能导致运行时错误.因此,我想在类型系统中编码这些约束.我怎么能这样做?

请注意,我正在寻找可在日常情况下使用的实用框架,尽可能减少对代码的直观开销.我特别想知道你将如何fg自己打交道; 也就是说,您是否会尝试将与长度相关的约束添加到其类型中,如此处所述,或者为了简化代码,您是否会使用上面给出的类型?

haskell type-systems list dependent-type

9
推荐指数
2
解决办法
879
查看次数

标签 统计

dependent-type ×1

haskell ×1

list ×1

type-systems ×1