Wal*_*erC 1 merge haskell list currying pattern-matching
我试图创建一个函数来编织两个列表一起例如
[1,3,5]和[2,4]- >[1,2,3,4,5]
我得到了我必须做的基本原则并检查但是我遇到了所需类型的问题
interleave :: ([a],[a]) -> [a]
Run Code Online (Sandbox Code Playgroud)
关于不同数量的参数给出错误.到目前为止,这个版本给了我最少的错误
interleave ([],[]) = []
interleave (xs,[]) = [xs]
interleave ([],ys) = [ys]
interleave (x:xs) (y:ys) = x : y : interleave xs ys
Run Code Online (Sandbox Code Playgroud)
我已经尝试过搞乱参数和输出几次但是我对haskell语法不熟悉所以我真的不知道我哪里出错了
第2部分:我还有一个测试文件,以确保功能是正确的,所以如果我在这之后仍然遇到麻烦(因为我得到类似的输入/输出不匹配导致我改变到我现在拥有的)我也可能会发布该代码以获取帮助
除非您只需要一个参数,否则我认为更改所有情况以获取两个参数会更有意义:
interleave [] [] = []
interleave xs [] = xs
interleave [] ys = ys
interleave (x:xs) (y:ys) = x : y : interleave xs ys
Run Code Online (Sandbox Code Playgroud)
请注意,在这种情况下interleave xs [],您最初返回[xs].这是一个包含名为的列表的列表xs.相反,你应该xs直接返回.同样涉及的案件ys.
| 归档时间: |
|
| 查看次数: |
147 次 |
| 最近记录: |