子句具有不同数量的参数(当混合不可能的模式和效果时)

时间:2018-11-05 04:19:22

标签: idris

采用函数tail,如列表库所示:

tail : (l : List a) -> {auto ok : NonEmpty l} -> List a
tail []      {ok=IsNonEmpty} impossible
tail (x::xs) {ok=p} = xs

现在尝试用有效的计算替换输出类型:

randomIndex : (l : List a) -> {auto ok : NonEmpty l} -> Eff Nat [RND]
randomIndex []      {ok=IsNonEmpty} impossible
randomIndex (x::xs) {ok=p} = pure 0 -- whatever

您收到错误Clauses have differing numbers of arguments

这似乎是错误的。有谁知道为什么会这样吗?可能是因为Eff是某些函数类型的类型同义词吗?

0 个答案:

没有答案