如何从Maybe
元组中提取第一个元素?我曾尝试使用fst
但这似乎不起作用。
答案 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)
您可以使用Maybe
对case
值进行模式匹配,例如:
case mbVal of
Just x -> fst x
Nothing -> ...
如果您确定值为fromJust
,也可以使用Just
。
最后,您可以立即匹配元组的第一个元素:
case mbVal of
Just (x,_) -> x