gpt4 book ai didi

haskell - 有没有一种无点的方法可以将条件检查转换为 Maybe 类型的输入?

转载 作者:行者123 更新时间:2023-12-04 13:08:00 26 4
gpt4 key购买 nike

我只是在 haskell 中完成一些简单的练习,想知道是否有一种无点的方法可以将 if-then-else 语句转换为 Maybe类型: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 .)

虽然我真的不认为两者都比有意义的版本更好。

关于haskell - 有没有一种无点的方法可以将条件检查转换为 Maybe 类型的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34535067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com