使用谓词提升到Maybe [英] Lift to Maybe using a predicate
本文介绍了使用谓词提升到Maybe的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在寻找类似于
liftPredMaybe ::(a - > Bool) - > a - >也许是
liftPredMaybe p a
| p a =只是
|否则= Nothing
Haskell中是否有这样的函数?
<不是现成的解决方案,而是使用 guard
(来自 Control。 Monad
)和(< $)
(来自 Data.Functor
), :
确保::可选f => (a - > Bool) - > a - > fa
确保pa = a <$ guard(pa)
(感谢Daniel Wagner )
可疑的可疑拼写是 \ p - > (< $)*>守卫。 p
。
I'm searching for something like
liftPredMaybe :: (a -> Bool) -> a -> Maybe a
liftPredMaybe p a
| p a = Just a
| otherwise = Nothing
Is there such a function in Haskell already?
解决方案
Not quite a ready-made solution, but with guard
(from Control.Monad
) and (<$)
(from Data.Functor
) we can write:
ensure :: Alternative f => (a -> Bool) -> a -> f a
ensure p a = a <$ guard (p a)
(Thanks to Daniel Wagner for suggesting a nice name for this function.)
A more pointfree spelling of dubious taste is \p -> (<$) <*> guard . p
.
这篇关于使用谓词提升到Maybe的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文