[英]wraps [] around each top-level element of list
wrap [1,2,3] should output [[1],[2],[3]]
wrap [[1],[2],[3]] should output [ [[1]], [[2]], [[3]] ]
我的实现是:
wrap [] = []
wrap (x:xs) = [x] : [wrap xs]
并haskell输出错误:发生检查:无法构造无限类型:t〜[t]
预期类型:[t]-> [t]实际类型:[t]-> [[t]]
[wrap xs]
包裹的整个结果wrap xs
。 您不想包装整个结果。 您只需要包装列表其余部分的每个元素,而这正是wrap xs
已经完成的工作。 因此, wrap
:
wrap :: [a] -> [[a]]
wrap [] = []
wrap (x:xs) = [x] : wrap xs
错误告诉您正在尝试使用[t]
,GHC期望t
。 这正是我们上面所说的,您正在包装很多东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.