meh*_*tti 0 recursion haskell concat
我在Haskell上练习递归,需要在嵌套列表上使用自己的命令进行concat方法。
我试过了
myConcat :: [[a]] -> [a]
myConcat [[]] = []
myConcat ((x:xs)) = x : myConcat ((xs))
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用。
myConcat :: [[a]] -> [a]
myConcat [[]] = []
myConcat ((x:xs)) = x : myConcat ((xs))
Run Code Online (Sandbox Code Playgroud)
这是目标。
主要问题是我真的不知道如何使用嵌套列表。
由于x此处是列表(其类型为[a]),因此x : …除非您再次想要创建列表列表,否则您将无法在此处使用列表,但是您myConcat将像id列表函数一样使用。
您需要在此处添加 x列表的其余部分,因此可以使用(++) :: [a] -> [a] -> [a],的确是:
myConcat :: [[a]] -> [a]
myConcat [] = []
myConcat (x:xs) = x ++ myConcat xsRun Code Online (Sandbox Code Playgroud)
请注意,您忘记了基本情况[]。通过编写,[[]]您可以将一个列表与一个元素匹配:空列表。那是不同的。