Haskell中的模式匹配元组

时间:2016-12-10 17:46:30

标签: haskell

我试图让这个函数返回True,但是目前它只是吐出错误

('A',_) `elem` [('A','B')]

Found hole: _ :: Char
• In the expression: _
  In the first argument of ‘elem’, namely ‘('A', _)’
  In the expression: ('A', _) `elem` [('A', 'B')]
• Relevant bindings include
    it :: Bool (bound at <interactive>:31:1)

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:5)

模式匹配是可能的:

  1. 用于函数方程的参数
  2. 在guards,do-expressions和list comprehensions中的pat <- expr构造中
  3. 在let / where
  4. 中等号左边的值绑定中
  5. 表示lambda表达式的参数
  6. 以备案例
  7. 除上述地方外,您不能在表达式中使用模式。

    你想要的是检查是否有一个元素的左边元素是&#39; A&#39;。你可以说

    'A' `elem` (map fst [ ('A', 'B') ] )
    

    或者您可以使用elemBy中的Data.List

    elemBy (\x y -> x == fst y) 'A'  [ ('A', 'B') ]