list - 我的函数中的 Haskell 语法错误

标签 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: Parse error in pattern: inverse

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

最佳答案

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

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)]

关于list - 我的函数中的 Haskell 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27885499/

相关文章:

html - 如何将带有列表的 <nav> 变成下拉菜单

haskell - 是否有惰性 `ByteString` 的参数版本?

haskell - 为什么 main 的返回不是退出代码?

haskell - 在haskell中解析html

F#小于模式匹配中的运算符

parsing - F# 中针对列表开头进行模式匹配的更简单方法

python - 检查列表中来自用户 raw_input 的元素数量

c# - 内存锁以确保共享数据可以被多个线程读取,但只能由一个线程写入?

c - 打印结构的所有 "members"

algorithm - 嘈杂数据集中的二维模式匹配