我只是在 haskell 中完成一些简单的练习,想知道是否有一种无点的方法将 if-then-else 语句转换为Maybe
type: Nothing
如果条件为假则返回,并且Just
如果条件为真则输入。
简而言之,给出一些:
maybeIf :: (a -> Bool) -> a -> Maybe a
maybeIf cond a = if cond a then Just a else Nothing
是否有一个关于以下方面的无点实现a
?我也一直在寻找更具体的版本,a -> Maybe a
,并且感觉可能在某个地方有答案Control.Arrow
。然而,自从Maybe
是一种数据类型,if-else 语句控制数据流,我不确定是否有一种干净的方法来做到这一点。
阻碍这一点的主要因素是if
/then
/else
。您可以定义一个if'
组合器,或者您可以使用我经常定义和使用的通用版本:
ensure p x = x <$ guard (p x)
标准工具提供连续的无点版本:
ensure p = ap (<$) (guard . p)
ensure = ap (<$) . (guard .)
虽然我真的不认为这两个版本比有意义的版本更好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)