是否有一种无点方法将条件检查转换为输入的 Maybe 类型?

2024-04-05

我只是在 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(使用前将#替换为@)

是否有一种无点方法将条件检查转换为输入的 Maybe 类型? 的相关文章

随机推荐

  • powershell 2.0 命令行重定向

    我正在寻找以下差异的解释 给出以下 powershell 脚本foo ps1 write host normal write error error write host yay 运行它 C gt powershell foo ps1 gt
  • 在 tkinter 中的函数内调用函数

    打电话时rest来自按钮的功能 然后start函数被调用并每秒继续打印值但是当我再次调用时rest函数start再次调用函数 但这次启动函数以 2 倍速度打印值 依此类推 但我不想以 2 倍速度打印值 我正在做一个小项目 我遇到了这类问题
  • 为什么 Spring Data MongoDB 1.5.2 会因 NoSuchMethodError 失败?

    我似乎无法使用 spring mongodb 初始化最基本的 MongoTemplate 以下是我的 POM 中的相关摘录
  • 如何将 SqLite 与 BlackBerry OS 4.5 一起使用?

    我目前在 BlackBerry 中使用持久存储 我想在 BlackBerry OS 4 5 中使用 SqLite 数据库 但我找不到任何相关教程 我可以在 BlackBerry OS 4 5 中使用 SqLite 还是需要其他版本的 Bla
  • Android 小部件的两个按钮以不同的意图调用相同的 Activity

    我在 Android 中有一个带有两个按钮的主屏幕小部件 两个按钮都应该调用相同的活动 类 只需使用不同的意图加上意图附加 即可知道哪个按钮调用了该类 目前只有 Button1 正在工作并调用该活动 我还在被调用的活动中收到键值 我怎样才能
  • 终端中的 LESS css 编译器帮助

    我使用 Ubuntu 13 04 Linux 我已经安装了node和npm 使用 npm 我通过终端下载的内容更少 我在我的简单 HTML CSS 项目中使用了它 纯前端 它不是 Ruby 或 Nodejs 项目 当我这样做时 lessc
  • Prolog 追加与剪切运算符

    当我们使用append和cut操作符时会出现什么问题 append2 L L append2 H T L H TL append2 T L TL 我尝试了几种不同的输入 但总是成功 append2 1 2 5 L L 1 2 5 appen
  • XPath 中字符串的连接函数

    我正在尝试使用 XPath 获取完整的地址 我是 XPath 新手 这是我到目前为止所做的 p class adr span class street address 2222 Warnar Ave span span class coun
  • FacebookDisplayName 有何用途?

    我们目前正在更改使用 Facebook SDK 进行登录的应用程序的名称 实际上没有其他任何操作 这意味着对于未更新的用户 Facebook 应用程序的名称将与FacebookDisplayName 在我的测试过程中 我找不到对价值的任何影
  • 将 Access-Control-Allow-Origin 添加到 PHP 标头

    我正在尝试解决 WebGL 应用程序上的 CORS 限制 我有一个可以解析 URL 并返回图像的 Web 服务 由于此 Web 服务未启用 CORS 因此我无法使用返回的图像作为纹理 我本来打算 编写 PHP 脚本来处理图像请求 图像请求将
  • Java 中的树实现

    我得到了以下树 然后我们被告知使用last child previous sibling方法来改变这三个的实现 结果如下 我现在正在研究 Java 实现 以在这棵树上执行不同的功能 我们有一个 Tree 接口和一个 TreeNode 接口
  • 如何在java中查找自1970年以来的秒数

    我正在处理一个实时项目 其中我需要查找自 1970 年 1 月 1 日以来的秒数 我使用以下代码来查找秒数 但给出了错误的结果 代码如下 public long returnSeconds int year int month int da
  • 自定义Zuul异常

    我在 Zuul 中有一个场景 其中 URL 路由的服务也可能已关闭 因此 响应正文会在 JSON 正文响应中抛出 500 HTTP Status 和 ZuulException timestamp 1459973637928 status
  • Node webpack 开发服务器在 vuejs 项目中失败“无法获取/”

    当我通过 webpack 运行节点开发服务器时 我的浏览器上收到一条非常无用的消息 Cannot GET 我正在使用以下内容构建 Vuejs 应用程序 Vue Js 的结构是由这个决定的Vue模板 http vuejs templates
  • 相当于python3中的python2 chr(int)

    python2 print chr 174 python3 print chr 174 我正在寻找 python2 中 chr 的等效项 我相信这是由于 python 3 返回 unicode 字符而不是 ASCII 实际上 在Py3中ch
  • C 如何计算没有浮点精度的百分比(千)

    如何将 2 个 int 值的百分比计算为表示百分比的 int 值 更精确的是千分之一 背景 目的 使用没有 FPU 的处理器 浮点计算所需的时间要长 100 倍 int x 25 int y 75 int resultPercentage
  • Ionic APP 中的 Disqus

    我正在尝试在我的 ionic 应用程序中实现 disqus 评论 我知道我必须将其托管在其设置的域上 我相信我已正确配置该域 欢迎任何帮助 这是我的 app js 中离子应用程序的代码 scope showComments function
  • 为什么我可以使用 bot.get_user 函数获取一些用户,但不能获取其他用户? [不和谐.py]

    我当时正在忙着一天的事情并做学校作业 我去了我的不和谐服务器来检查一天中声誉和排行榜进度如何变化 当我使用该命令时 我收到错误 Nonetype object has no attribute display name 所以我很自然地转到运
  • 从另一个类访问静态成员函数

    我在 C 类中有一个静态 stl 映射 并且有另一个静态成员函数来返回指向映射中对象的常量指针 该映射对于该类中的所有对象都是通用的 唯一的问题是 我需要搜索这个映射并从另一个类 位于不同的 cpp h 文件中 设置它 当我尝试在 vs20
  • 是否有一种无点方法将条件检查转换为输入的 Maybe 类型?

    我只是在 haskell 中完成一些简单的练习 想知道是否有一种无点的方法将 if then else 语句转换为Maybe type Nothing如果条件为假则返回 并且Just如果条件为真则输入 简而言之 给出一些 maybeIf a