如何从具有 EXCEPTION 效果的 PureScript 函数返回值?

2024-01-03

我刚刚开始学习 PureScript 效果,并且一直在尝试创建一个具有 EXCEPTION 效果的函数。

lengthGt5 :: forall eff. String -> Eff (err :: EXCEPTION | eff) String
lengthGt5 a = if (length a <= 5)
              then throwException $ error "Word is not the right length!"
              else a

main = do
  word <- catchException handleShortWord (lengthGt5 "test")
  log word

  where
    handleShortWord err = do
      log (message err)
      return "Defaut::casserole"

当我尝试运行此程序时,出现以下错误

无法匹配类型

    String

  with type

    Eff
      ( err :: EXCEPTION
      | eff0
      )
      String

我知道 lengthGt5 需要在非异常情况下返回一个包裹在 Eff 中的字符串,但我不确定如何围绕该值创建一个“空效果包装器”a。我这样想对吗?


我知道我错过了什么。要在非异常情况下返回值,您必须调用pure a

lengthGt5 :: forall eff. String -> Eff (err :: EXCEPTION | eff) String
lengthGt5 a = if (length a <= 5)
              then throwException $ error "Word is not the right length!"
              else (pure a)

pure在Applicative类型类中定义如下:

class (Apply f) <= Applicative f where
    pure :: forall a. a -> f a

Applicative 是Apply 的子类,定义了纯函数。纯的 接受一个值并返回一个其类型已被包装的值 类型构造函数 f。

So pure取值a,并返回包装在类型构造函数中的值 - 在这种情况下,类型构造函数是Eff e

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从具有 EXCEPTION 效果的 PureScript 函数返回值? 的相关文章

  • 当我提出自己的异常作为响应时,如何更轻松地抑制以前的异常?

    Consider try import someProprietaryModule except ImportError raise ImportError It appears that
  • 多种形式的异常处理

    当我调试时与运行编译的 exe 时 我看到不同的行为 异常被捕获或未被捕获 我有两个表格 Form1 和 Form2 Form1 上有一个按钮 用于实例化并调用 Form2 上的 ShowDialog Form2 上有一个按钮 故意产生除以
  • 如果在 Application_Start 中抛出未处理的异常会发生什么?

    是否会针对下一个请求再次运行 Application Start 方法 它是否取决于 ASP NET 版本 托管服务器版本和 或其他上下文 我试图确定在那里加载关键程序集是否是一件好事 例如 对于整个应用程序的功能是否至关重要的数据访问组件
  • JSF 2 全局异常处理,导航到错误页面未发生

    我正在开发一个基于 JSF 2 0 的 Web 应用程序 我正在尝试实现一个全局异常处理程序 每当发生任何异常 例如 NullPointerException ServletException ViewExpiredException 等
  • 通过JVMTI识别异常

    我正在使用 JVMTI 为 Java 应用程序编写一个检测工具 我已经看到 JVMTI 检测何时抛出异常以及何时捕获异常http docs oracle com javase 7 docs platform jvmti jvmti html
  • 如何在 Python 3.2 程序中优雅地包含 Python 3.3 from None 异常语法?

    我正在尝试重新引发异常 以便为用户提供有关实际错误的更好信息 Python 3 3 包括PEP 409 http www python org dev peps pep 0409 它添加了raise NewException from No
  • 何时捕获 java.lang.Error?

    在什么情况下应该抓住java lang Error在申请上 一般来说 永远不会 但是 有时您需要捕获特定的错误 如果您正在编写类似框架的代码 加载第 3 方类 那么最好抓住LinkageError 未找到类定义 链接不满足 类更改不兼容 我
  • ASP.NET C# 捕获类中的所有异常

    我知道这不是正确的做法 而且根本不干净 我只是想知道这是否可能 如果我有一个包含很多方法的类 public class Foo methodA methodB methodC 是否可以捕获所有可能发生的异常 而不必在每个方法中编写 try
  • C++运行时如何确定抛出的异常的类型?

    如果我执行以下操作 运行时如何确定抛出的异常的类型 它使用 RTTI 吗 try dostuff throws something catch int e catch const char e catch const myexception
  • C++ 支持“finally”块吗? (我经常听到的“RAII”是什么?)

    C 是否支持 finally http java sun com docs books tutorial essential exceptions finally html 块 是什么RAII 习语 http en wikipedia or
  • 不要在异常堆栈中显示 Python raise-line

    当我在 Python 库中引发自己的异常时 异常堆栈将引发行本身显示为堆栈的最后一项 这显然不是一个错误 在概念上是正确的 但是当您在外部使用代码 例如作为模块 时 它会将重点放在对调试无用的东西上 有没有办法避免这种情况并强制 Pytho
  • CTRL+C 和 CTRL+Break 不同吗?

    我一直认为它们绝对是一样的 但我刚刚在以下位置找到了一些值 CTRL C EVENT 和 CTRL BREAK EVENT设置控制台Ctrl处理程序 http msdn microsoft com en us library ms68601
  • Linux 中不使用 C++ 的 C 异常处理

    Linux 是否提供了 C 语言的异常处理而不求助于 C 或者 实现此类异常处理的最佳方法是什么 目标是避免检查每个调用的函数的返回码 而是执行类似于 C 的线程安全且易于移植的操作 您可以通过为其编写信号处理程序来处理信号 GNU 记录的
  • 捕获通信异常而不是自定义故障异常 - WCF

    在服务器上我抛出这样的异常 catch SqlException exception if exception Message Contains Custom error from stored proc Exception to be t
  • linq-to-sql:存储过程不能在查询中使用

    这在 VS2010 RC LINQ to SQL 上失败 并出现 InvalidOperationException 存储过程不能在查询内使用 var foo from a in aTable from b in this SomeStor
  • 抛出异常但保留堆栈跟踪

    我想抛出异常 但也带有自定义消息和持久堆栈跟踪 我已经经历了各种线程 catch Exception ex throw Message is read only but stacktrace persist throw ex Message
  • 当前异常上下文掩盖了先前的错误

    以下是我在 Doug Hellman 网站上名为 masking exceptions catch py 的文件中找到的示例 我暂时无法找到链接 throws 中引发的异常将被丢弃 而 cleanup 中引发的异常将被报告 道格在他的文章中
  • 捕获异常:除以零

    当我尝试除以 0 时 以下代码不会捕获异常 我是否需要抛出异常 或者计算机是否在运行时自动抛出异常 int i 0 cin gt gt i what if someone enters zero try i 5 i catch std lo
  • Python Tornado 中的异常处理

    我正在尝试处理发生的异常AsyncClient fetch这样 from tornado httpclient import AsyncHTTPClient from tornado httpclient import HTTPReques
  • 在 MVVM 中哪里可以捕获异常?

    我的视图模型类有一个连接到服务的方法 不确定这是否是一个好的实践 或者视图模型是否应该是严格的属性和属性更改机制 当然 我想在连接或断开连接时处理任何可能的 WCF 异常 让我们使用未找到端点作为示例 考虑到这是一个我想引起用户注意的异常

随机推荐

  • Twitter Bootstrap - 如何根据 @media 定义的宽度更改 css 类

    这是我的第一个问题 但我只想说这个网站多年来帮助了我无数次 我想我已经到了有自己的问题要问的阶段了 抱歉 如果问题不清楚 我会尝试详细说明 我已经为我的一些元素分配了一个过渡 这样当它们悬停在上面时它们就会向上升起 即 example ho
  • Python 使用 Beautiful Soup 对特定内容进行 HTML 处理

    所以当我决定解析网站的内容时 例如 http allrecipes com Recipe Slow Cooker Pork Chops II Detail aspx http allrecipes com Recipe Slow Cooke
  • 如何在 Python 中处理命令行参数? [复制]

    这个问题在这里已经有答案了 如果我期望像 001 或 999 这样的东西 这次让我们将期望限制在 001 999 范围 并且传递的其他参数很少 并且希望忽略任何意外的参数 那么处理命令行参数的简单表达式是什么 我知道 例如 如果我需要查明
  • Facebook 身份验证对话框(JS SDK)返回空白屏幕

    我正在设置一个 Rails 应用程序并尝试通过 Facebook JS SDK 实现登录 已经缺少 Omniauth 无论如何 发生的情况是弹出对话框 用户提供登录信息 但随后它重定向到https www facebook com conn
  • 如何使用服务帐户访问 GSuite 电子邮件帐户的 GMAIL API

    我希望我的服务帐户能够模拟 GSuite 中的用户之一 我有 通过 GCP 创建项目 在项目中启用GMail API 向该项目添加了一个服务帐户 启用了domain wide delegation在服务帐户设置中GCP 添加了一个API C
  • .Net 中的缓存和 WebBrowser 控件

    我正在使用 Net 中的 WebBrowser 控件来执行一些第三方联属营销转换 我在数据库中有一个队列表 其中包含要执行的所有脚本 图像 我使用 WebBrowser 控件在 WinForms 应用程序中循环遍历所有这些内容 执行脚本 图
  • 使用 bash 命令结果设置 ant 属性

    我怎样才能设置antproperty 的值是 bash 脚本执行的结果 例如 我需要有一个利用的目标svn and bash实用程序以控制构建执行 更具体地说 我尝试创建的目标将用于定义通过命令部署的应用程序中是否有修改的文件 svn st
  • 使用 auto 的模板函数重载解析

    具有以下 3 个重载 template
  • 将 UITableView 滑动到屏幕上,继续滑动?

    我想要一个从屏幕外开始并可以在屏幕上滚动 到达顶部并继续滚动的表格视图 我在下面制作了所需交互的视觉效果 我尝试过两件事 但都没有完全按照我的需要工作 我做的第一件事是将表视图放入滚动视图中 并在表视图上检测到平移时移动滚动视图 这会阻止桌
  • Parsley.js - 仅验证数字的可选输入

    我有一个表单 其中有 1 个可选输入和 3 个必填输入字段 对于可选输入 我有以下标记
  • 在 Meteor 中配置 Iron 路由器 - React

    使用 Meteor 1 2 0 1 和 React 我的简单应用程序运行良好 但现在我需要铁路由器 https github com iron meteor iron router 应用程序布局 client app jsx lib rou
  • Emmet - 带缩写的换行 - 表示换行文本的令牌,即{原始文本}

    我正在尝试尽可能惰性地将 URL 列表转换为 HTML 链接 www annaandsally com au www babylush com au www babysgotstyle com au etc 使用缩写形式的wrapper 我
  • WebWorkers 的执行速度似乎比主线程慢得多

    我一直致力于优化一些长时间运行的 JAvaScript 并尝试实现 WebWorkers 我有一组独立的任务需要计算 在我最初的测试中 有 80 个任务 在主线程上完成需要 250 毫秒 我认为我可以将任务分配给一些网络工作人员 并将时间缩
  • Hibernate 中的枚举

    在 DAO 中拥有一个其值来自 Java 枚举的字段通常很有用 一个典型的示例是登录 DAO 其中通常有一个将用户特征描述为 NORMAL 或 ADMIN 的字段 在 Hibernate 中 我将使用以下 2 个对象以 半 类型安全的方式表
  • C++ 实验/文件系统remove_all

    我想删除 C 17 中包含子文件夹和文件的文件夹 我在用着experimental filesystem namespace filesys std experimental filesystem uintmax t n filesys r
  • 在Android 8.1中访问WallpaperManager

    我正在构建一个启动器 需要访问用户当前的背景壁纸 但每次启动应用程序时都会收到警告W WallpaperManager No permission to access wallpaper suppressing exception to a
  • SaveChanges() 实体框架 4.1 的问题

    我在保存对数据库的更改时遇到问题 我正在控制器中更新模型 A 但是当我使用 SaveChanges 保存更改时 我最终在 B 的数据库中出现了重复的项目 调用 UpdateModel 后 我检查了 Bs 属性 它正如我所预期的那样 但是在调
  • 使用 supertest、express 和 mocha 进行 Grunt 测试 api

    我有一个由express运行的https服务器 我使用mocha和supertest对其进行测试 我的问题是 如果我只运行测试 就可以了 如果我尝试使用 test 运行 gruntfile 然后运行 express 我会看到很多 EADDR
  • 如何让按钮文本在 IE 中顶部对齐?

    我在按钮内有一些文本 我希望该文本在按钮顶部对齐 默认情况下 它似乎与中间对齐 在 webkit 中 我可以使用 webkit box align start 将此文本对齐到顶部这似乎不适用于 IE 例子 http jsfiddle net
  • 如何从具有 EXCEPTION 效果的 PureScript 函数返回值?

    我刚刚开始学习 PureScript 效果 并且一直在尝试创建一个具有 EXCEPTION 效果的函数 lengthGt5 forall eff String gt Eff err EXCEPTION eff String lengthGt