【发布时间】:2018-05-02 09:09:52
【问题描述】:
我有一个包含 3 个元组项的列表,我想根据第一项为列表编制索引,我已经编写了一个在逻辑上听起来很合理的代码,但出现类型错误,这就是我写的
p>addIndex [] indexed = indexed
addIndex ((a1,b1,c1):xs) []
= addIndex xs [(a1,b1,c1,0)]
addIndex ((a1,b1,c1):xs) indexedWIP
= addIndexH ((a1,b1,c1):xs) indexedWIP (last indexedWIP)
addIndexH ((a1,b1,c1):xs) indexedWIP (ax,bx,cx,ix)
= if (a1 /= ax)
then (addIndex xs (indexedWIP ++ (a1,b1,c1,(ix+1))))
else (addIndex xs (indexedWIP ++ (a1,b1,c1,(ix))))
我收到以下类型错误
ERROR file:.\lmaogetrektson.hs:109 - Type error in application
*** Expression : indexedWIP ++ (a1,b1,c1,ix + 1)
*** Term : (a1,b1,c1,ix + 1)
*** Type : (b,c,d,e)
*** Does not match : [a]
【问题讨论】:
-
这不是一个包含三个元素的列表,而是一个 3 元组。
-
天哪,伙计,你似乎总是因为非常简单的术语来抨击我,或者当你从未对我的问题提供任何意见时要求我提供额外的服务。将其编辑为元组...
-
完全没有,但元组和列表之间存在根本区别:您可以不使用
++附加列表,元组始终具有固定数量的项目(已知在编译时间),元素可以有不同的元素,等等。所以你的indexedWIP ++ (...)不会工作,因为你不能追加元组。 -
你可能想缩进一点:P
-
@WillemVanOnsem 你的意思是“你不能用
++附加元组”。 @Omar 列表和元组的行为确实不同,Willem 并不是要抨击你,而是要指出问题。
标签: list haskell types tuples type-mismatch