我正在Haskell上进行递归,需要在嵌套列表上使用自己的实现来执行concat方法。
我已经尝试过
myConcat :: [[a]] -> [a]
myConcat [[]] = []
myConcat ((x:xs)) = x : myConcat ((xs))
但是它似乎不起作用。
myConcat [[1,2],[3,4,5],[6]] == [1,2,3,4,5,6]
这是目标。
主要问题是我真的不知道如何使用嵌套列表。
由于x
是此处的列表(其类型为[a]
),除非再次想要创建列表列表,否则您不能在此处使用x : …
,但是您的myConcat
会像[ C0]清单功能。
您需要在列表的其余部分附加 id
,因此可以使用x
,确实:
(++) :: [a] -> [a] -> [a]
注意,您忘记了基本情况(++) :: [a] -> [a] -> [a]
。通过写入myConcat :: [[a]] -> [a]
myConcat [] = []
myConcat (x:xs) = x ++ myConcat xs
,您可以将列表与one元素匹配:空列表。那是不同的。
您好,您只需将[]
替换为[[]]