是什么原因导致“无可辩驳的模式失败了”,这是什么意思?

2024-03-18

什么是

无可辩驳的模式失败了

意思是? 什么情况会导致这个运行时错误?


考虑这个例子:

foo ~(Just x) = "hello"
main = putStrLn $ foo Nothing

这使用了一种无可辩驳的模式(~部分)。无可辩驳的模式总是“匹配”,所以这个打印hello.

foo ~(Just x) = x
main = putStrLn $ foo Nothing

现在,模式仍然匹配,但是当我们尝试使用x当它实际上不存在时,我们得到了一个无可辩驳的模式匹配错误:

Irr.hs: /tmp/Irr.hs:2:1-17: Irrefutable pattern failed for pattern (Data.Maybe.Just x)

这与没有匹配模式时出现的错误有微妙的区别:

foo (Just x) = x
main = putStrLn $ foo Nothing

这输出

Irr.hs: /tmp/Irr.hs:2:1-16: Non-exhaustive patterns in function foo

当然,这是一个有些人为的例子。更可能的解释是它来自于一个模式let捆绑,正如 chrisdb 建议的那样 https://stackoverflow.com/questions/6711870/what-are-the-cases-that-will-cause-irrefutable-pattern-failed-for-pattern/6711945#6711945.

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

是什么原因导致“无可辩驳的模式失败了”,这是什么意思? 的相关文章

  • Cabal 在 NixOS 上构建时找不到外部库

    我正在尝试使用 cabal2nix 在 NixOS 上构建一个内部 Haskell 项目 它包装 并因此依赖 一个外部库 在 Ubuntu 上可以通过以下方式构建 wget设置源 然后运行make make install ldconfig
  • 在 Haskell 中编写 Web 应用程序的最简单方法是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在我的项目中更多地使用 Haskell 并且我认为如果我可以开始将它用于 Web 应用程序 这将真正
  • 在 Haskell/Yampa 和 HOOD 中调试游戏对象的输出

    我一直坚持使用 Haskell Yampa Arrows with HOOD 为我的游戏对象生成调试输出 我的引擎基本上运行一系列游戏对象 这些对象产生输出状态 线 圆 然后进行渲染 data Output Circle Position2
  • Haskell Servant 和流媒体

    我正在尝试添加一个功能到我的servant服务器将从 Amazon S3 获取文件并将其流式传输回用户 由于文件可能很大 我不想将它们下载到本地然后将它们提供给客户端 我宁愿将它们直接从 S3 流式传输到客户端 I use Amazonka
  • 独立于符号的字符串的模式匹配

    我需要一种算法 可以在数据中找到预定义的模式 以字符串的形式存在 独立于数据和模式的实际符号 字符 我只关心符号之间的关系 而不关心符号本身 数据中的同一符号具有不同的模式符号也是合法的 模式匹配算法必须强制执行的唯一一件事是保留模式中同一
  • 让 GHC 生成“带进位加法 (ADC)”指令

    下面的代码将表示 192 位数字的两个未装箱字三元组添加到新的未装箱字三元组中 并且还返回任何溢出 LANGUAGE MagicHash LANGUAGE UnboxedTuples import GHC Prim plusWord2 Wo
  • 使用 cabal new-install 重新安装相同版本的软件包

    我正在开发 Haskell 包 我还没有上传到Hackage 版本号是0 1 0 0 我正在使用新风格的 Cabal 命令 为了在我处理包的同时测试它 使库可用于测试项目 我运行cabal new install lib构建包后 然而 我注
  • PostgreSQL 对 string\varchar 的各种清理

    我必须通过以下方式清理一些 varchar 删除特殊字符 例如 来自封闭列表 我已经成功地通过大量使用replace regexp replace来做到这一点 但我正在寻找类似于SQL Server中的东西 删除以下数字但不删除相邻的数字含
  • 生成所有可能的树

    给定以下数据类型定义 data FormTree Empty Node FormTree FormTree deriving Show 我想编写一个函数 它生成一个无限列表 其中包含按长度排序的所有可能的树 例如节点数量 下面的代码几乎满足
  • 整数转浮点数

    这段代码的工作原理 posToXY Float gt Float gt Integer posToXY a b do let y a b round y 但这不起作用 posToXY Integer gt Integer gt Intege
  • 将系统命令的结果绑定到 Haskell 中的变量

    如何在 Haskell 中运行系统命令and将其结果 即标准输出 绑定到变量 在伪 Haskell 中 我正在寻找类似以下内容的内容 import System Process main do output lt callCommand e
  • Haskell:找不到模块“Data.List.Split”

    我正在尝试在 Haskell 中拆分列表 据我所知 最简单的方法是splitOn 但是这个函数需要Data List Split 所以我尝试运行import Data List Split在前奏曲中 但是 我收到以下错误 Could not
  • ErrorT 已弃用,但 exceptT 不适合

    我有一个一元计算 在某些时候 由于单子模式匹配 它开始需要 MonadFail 约束 我的简单解决方法是使用以下命令运行它 fmap either error id runErrorT 然而哎呀 Deprecated Use Control
  • 为什么 Parsec 的 sepBy 停止并且不解析所有元素?

    我正在尝试解析一些逗号分隔的字符串 该字符串可能包含也可能不包含具有图像尺寸的字符串 例如 hello world 300x300 good bye world 我写了下面的小程序 import Text Parsec import qua
  • 这个记忆的斐波那契函数是如何工作的?

    在我正在做的函数式编程课程的当前练习作业中 我们必须制作给定函数的记忆版本 为了解释记忆化 给出以下示例 fiblist fibm x x lt 0 fibm 0 0 fibm 1 1 fibm n fiblist n 1 fiblist
  • Haskell 下划线与显式变量

    我已经学习 Haskell 几个星期了 我有一个关于下划线的使用的问题 作为函数参数 我认为用一个具体的例子来问我的问题会更好 假设我想定义一个函数 根据提供的索引提取列表的元素 是的 我意识到 已经是预先定义的 我可以定义该函数的两种方法
  • Haskell scala 互操作性

    我是 Scala 初学者 来自面向对象范式 在了解 Scala 的函数式编程部分时 我被引导到 Haskell 纯函数式编程语言 探索 SO 问题答案 我发现 Java Haskell 具有互操作性 我很想知道 Scala Haskell
  • Haskell:无法预期类型“Integer”与实际类型“Int”

    我已经盯着这段代码有一段时间了 但我无法理解该错误消息 divisors Integer gt Integer divisors n t t lt 1 n mod n t 0 length a gt Integer length 0 len
  • 纯函数怎么能做IO呢?

    我最近了解到莫纳德随机数 http hackage haskell org package MonadRandom 0 1 13 docs Control Monad Random Class html t 3aMonadRandom图书馆
  • 如何在 Haskell 中向右或向左移动列表的 1 个元素?

    嗨 我一直在寻找答案 但找不到 假设我们有一个像这样的列表 1 10 4 5 3 我怎样才能将 5 向左移动 使这个列表变成 1 10 5 4 3 我尝试过了swapElementsAt通过找到该元素的索引 但它看起来非常不足 swapEl

随机推荐

  • 如何写入 OpenGL 深度缓冲区

    我正在尝试实现一种老式技术 其中使用渲染的背景图像和预设深度信息来遮挡场景中的其他对象 因此 例如 如果您有一张房间的图片 前景中的天花板上悬挂着一些电线 则这些电线会在深度图中给出浅深度值 并且在正确渲染时 允许角色在电线 后面 行走 但
  • Chart.js 响应式条形图标签大小调整

    所以我有一个使用 Chart js 的条形图 并且启用了响应式功能 它似乎适用于某些图表 但不适用于其他图表 例如 我的条形图标签似乎没有随窗口调整大小 但其他所有内容都会使整个图表在较小的窗口尺寸下看起来非常奇怪 如何重新调整标签大小以使
  • sed 或 awk 替换块中的行

    输入文件包含 abc para1 123 para2 456 para3 111 pqr para1 333 para2 765 para3 1345 xyz para1 888 para2 236 para3 964 shell脚本的要求
  • 获取 UTC 时间戳[重复]

    这个问题在这里已经有答案了 如何在 JavaScript 中获取当前 UTC 时间戳 我想这样做 这样我就可以从客户端发送独立于时区的时间戳 new Date getTime 有关更多信息 请参阅 詹姆斯 麦克马洪的回答 https sta
  • 从 Finger Tree 文章中查找丢失的“Reduce”类型类

    昨天的维基百科 http www urbandictionary com define php term Wikibender开始于这个计算器问题 https stackoverflow com questions 8428554 what
  • 查找 Android 应用程序的包名称以使用 Intent 从网络启动 Market 应用程序

    我正在创建一个移动网站 其中包含一个页面 人们可以从中下载我们推荐的相关应用程序 我发现了指示 http developer android com distribute googleplay promote linking html用于创
  • 预期有 0​​ 个参数的问题,但在 Redux Toolkit 中得到 1

    我有一个错误Expected 0 arguments but got 1 在简单的 Redux Slice 文件中 当我尝试调度时出现此错误 App tsx useEffect gt dispatch getMovies query sea
  • 如何在 Linux Fedora 上的 Apache 中启用 PHP?

    标题几乎概括了这一点 我在跑Fedora 18 64 位通过 httpd 安装 Apache 我的 Apache 运行得很好 但我的 PHP 似乎无法工作 我相当确定我的机器上确实安装了它 Linux 新手 我在我的目录中创建了一个 tes
  • PIP:“无法卸载‘ipython’。它是一个已安装的 distutils 项目,因此我们无法准确确定......”[重复]

    这个问题在这里已经有答案了 正在尝试安装spyder https pypi org project spyder using pip pip install spyder 弹出这个错误 无法卸载 ipython 这是一个已安装的 distu
  • 标尺应用程序如何在所有设备上保持准确?

    我真的很困惑目前市场上的 iOS Ruler 应用程序如何与不同尺寸的设备兼容 底部显示了一个示例 经过研究 我得出的结论是 实时获取当前屏幕的 PPI 是不可能的 这使得无法以编程方式绘制尺子 我的疑问是这些标尺应用程序如何在无法获取设备
  • 关于在视频中查找学生

    我现在正在从事一个眼球追踪项目 在这个项目中 我在网络摄像头视频中跟踪眼睛 分辨率为 640X480 我可以在每一帧中定位和跟踪眼睛 但我需要定位瞳孔 我读了很多论文 大部分都是参考Alan Yuille的可变形模板方法来提取和跟踪眼睛特征
  • Spring + Oauth2:如何刷新访问令牌

    我正在使用 Spring Boot 构建 REST Web 服务 身份验证是使用 Spring Security 和 OAuth2 实现的 用户根据 LDAP 服务器进行身份验证 这是我的网络安全配置 Configuration Enabl
  • C# 开发最简单的免费设置

    我在上网本上使用 Windows XP SP3 我需要编译 C 程序以供学习 我没有快速的电脑或快速的互联网连接或快钱 有人可以建议让我继续前进的最佳方法吗 谢谢你们 http www microsoft com express Downl
  • 在 Android 3.1 上调整 TextView 大小不会缩小其高度

    我有一个TextView可以动态调整大小 我使用setTextSize 它在 Android 2 2 上正确扩展和收缩其边界 但在Android 3 1上 当文本变小时 区域的高度不会缩小 这证明了这一点 布局只是简单的垂直LinearLa
  • 背景和 CSS 浮动

    所以我使用 960 网格系统 发现了一些他们不支持的东西 我考虑过切换到蓝图 但我必须在此过程中稍后再回到设计 不管怎样 我简化了我的代码来展示我所经历的
  • 对数据库中的项目符号进行排序

    我有一个专栏 datatype varchar 50 在数据库 SQL Server 2008 中 其值如下所示 1 2 1 1 11 4 1 5 2 1 1 1 4 1 2 1 4 2 2 4 3 4 2 4 3 1 4 2 1 11 2
  • HTML 标题对齐问题

    你好 我有 2 个简单的标题 一个 h3 位于一个 h2 之上 由于某些奇怪的原因 h2 标题的左侧似乎有一个 1px 的间隙 这让我发疯 我只是不明白为什么会这样 h2 的字体大小为 40px 而 h3 的字体大小为 12px 有人能帮我
  • 使用 EPPlus 返回 INT 的 Excel 日期列

    所以我使用 EPPlus 来读取和写入 Excel 文档 Workflow 用户生成填充的 Excel 文档 打开文档并添加一行 已上传并已阅读 当我读回值时 使用 EPPlus 创建文档时生成的日期显示正确 但用户更改日期或添加的行显示为
  • 如何在样式文件中定义可绘制对象的大小?

    我想指定一次资源 值 styles xml两个复选框的大小及其四个形状可绘制对象 res drawable cb1 checked xml res drawable cb1 unchecked xml res drawable cb2 ch
  • 是什么原因导致“无可辩驳的模式失败了”,这是什么意思?

    什么是 无可辩驳的模式失败了 意思是 什么情况会导致这个运行时错误 考虑这个例子 foo Just x hello main putStrLn foo Nothing 这使用了一种无可辩驳的模式 部分 无可辩驳的模式总是 匹配 所以这个打印