【发布时间】:2014-02-01 00:17:52
【问题描述】:
我想做的是对传递给stomap的列表的每个元素(String)应用stoline函数..
stoline 的类型:stoline :: String -> [Obj]。
这是我的代码:
stomap :: [[String]] -> [Obj]
stomap [[val]] = stoline val
stomap (val:vals) = map (\a -> stoline a) val ++ ...
传递给stomap 的数据示例:[["0","133","2"],["6","0","0"],["656","0","3"]]。
错误:在 stoline 的调用的返回类型中,无法将预期类型 Obj 与实际类型 [Obj] 匹配。
问题是 map 函数返回一个列表(不应该!),但我真的不知道如何避免这个问题..
【问题讨论】:
-
仅供参考,
[Obj]是一个列表,而不是一个数组。语义和访问时间不同。例如,列表对第 k 个元素具有 O(k) 访问权限,而数组对第 k 个元素具有 O(1) 访问权限。 -
感谢您的评论,我已修复(书写错误..); +1 !
-
好吧,根据你的说法,stoline 接受一个字符串,而不是字符串列表。
-
@LukaHorvat:是的!但是
stomap函数将String发送到stoline... val 是[String]和map获取val 的每个元素(所以Strings)。