所以我有这个功能来交换haskell中的数字对,我不知道我做错了什么,也许你们可以帮我一臂之力。 所以基本上这个函数得到一个列表,比如,[1,2,3,4,5],并返回由对交换的数字,类似于[2,1,4,3,5]。如果元素的数量是奇数,则最后一个元素保持不变。
这就是我所做的:
swapPairs :: [a] -> [a]
swapPairs (x:xs) = [!!x = !!x+1 && !!x+1 = !!x| x <- xs]
答案 0 :(得分:4)
-- Return first two elements in inverted order, recusively call for remaining list,
-- only matches lists of two or more elements
swapPairs (a:b:xs) = b : a : swapPairs xs
-- Return tail for zero or one remaining elements
swapPairs (xs) = xs
答案 1 :(得分:2)
您可以使用模式匹配来获取2个头元素:
swapPairs (x:y:xs) = y : x : (swapPairs xs)