【发布时间】:2017-06-22 15:42:48
【问题描述】:
我正在尝试创建一个需要两个列表并返回一个列表的函数(我是 haskell 的新手)。列表应该包含第一个列表中不在第二个列表中的所有元素,以及第二个列表中所有不在第一个列表中的元素。
所以:func [3,2,1,4] [2,5,1] 应该返回 [3,4,5]
我认为我的代码朝着正确的方向发展,但其中的某个地方是一个大错误。
func :: [Int] -> [Int] -> [Int]
func [] a = a
func a [] = a
func (x:xs) (y:ys) | elem x (y:ys) = filter (/=x) (y:ys)
| otherwise = func ys xs
【问题讨论】:
-
你能解释一下最后两行吗,因为它们对我来说似乎没有多大意义......
-
我认为您的意思是我的代码的最后 2 个。因此,如果 x 是列表的一个元素 (y:ys),则创建没有 x 的列表。而且我已经尝试使用递归来对 xs 做同样的事情,但现在它应该检查 ys 的第一个元素并查看 xs 中是否有其中一个元素。
-
但是您没有执行递归调用,使用过滤后的列表。
标签: list function haskell recursion