我的函数中的Haskell语法错误

时间:2015-01-11 09:05:39

标签: list haskell pattern-matching parse-error

我曾尝试编写一个带有列表对的函数,然后交换 配对元素

inverse :: [(a,b)] -> [(b,a)]
inverse [] = []
inverse (x,y):xs = (y:x): inverse xs

我已经通过Prelude加载了这个函数,它给了我以下错误:

  

mydefs.hs:11:1:解析模式中的错误:反向

这是第11行,inverse (x,y):xs = (y:x): inverse xs

1 个答案:

答案 0 :(得分:6)

你只需要包装解压缩的元组和列表的其余部分,就像这样

inverse ((x, y):xs) = (y, x) : inverse xs

除此之外,您可以使用Data.Tuple package's swap function,就像这样

Prelude> import Data.Tuple
Prelude Data.Tuple> map swap [(1, 2), (3, 4)]
[(2,1),(4,3)]