Haskell:如何从Maybe元组中获取元素

时间:2016-02-13 20:03:45

标签: haskell

如何从Maybe元组中提取第一个元素?我曾尝试使用fst但这似乎不起作用。

2 个答案:

答案 0 :(得分:7)

由于Maybe是一个仿函数,请使用fmap提升fst :: (a, b) -> a以使用Maybe (a,b)

> :t fmap fst
fmap fst :: Functor f => f (b, b1) -> f b
> fmap fst $ Just (3, 6)
Just 3
> fmap fst $ Nothing
Nothing

当然,这会返回Maybe a,而不是a,因此您可以使用maybe函数来解压缩结果(如果{{1},则提供默认值实际上是Maybe (a, b)):

Nothing

答案 1 :(得分:3)

您可以使用Maybecase值进行模式匹配,例如:

case mbVal of
  Just x -> fst x
  Nothing -> ...

如果您确定值为fromJust,也可以使用Just

最后,您可以立即匹配元组的第一个元素:

case mbVal of
  Just (x,_) -> x