模式匹配是多余的

2023-11-21

Haskell,堆栈构建工具。

我有代码:

quote :: Char
quote = '\''

doubleQuote :: Char
doubleQuote = '\"'

isBorder :: Char -> Bool
isBorder quote = True
isBorder doubleQuote = True
isBorder _ = False

它将被编译而没有错误,但我在编译过程中看到消息:

D:\haskell\real\app\Main.hs:34:1: 警告:[-Woverlapping-patterns]
模式匹配是多余的
在 `isBorder' 的等式中: isBorder 双引号 = ...

D:\haskell\real\app\Main.hs:35:1:警告:[-Woverlapping-patterns]
模式匹配是多余的
在 `isBorder' 的等式中: isBorder _ = ...

这是什么意思?我没看到裁员...


声明函数时,参数变量是new名称。您的 quote 和 doubleQuote 正在隐藏函数,而不是调用函数进行模式匹配。这样,模式匹配的语言就微妙地偏离了右手表达式的语言。为了实现你想要的,要么

isBorder :: Char -> Bool
isBorder '\'' = True
isBorder '\"' = True
isBorder _ = False

or

isBorder :: Char -> Bool
isBorder c | quote == c = True
isBorder c | doubleQuote == c = True
isBorder _ = False

其哲学是首先将论证与名称绑定起来then使用防护来调用计算结果为布尔值的表达式。

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

模式匹配是多余的 的相关文章

  • 仪器化状态单子

    我正在努力给予Monad and MonadState的实例State 计算的数量 gt gt return get and put运营 data Counts Counts binds Int returns Int gets Int p
  • Java 中正则表达式回溯直到溢出

    下面的表达式 ifdef FEATURE s r n endif s s end of s FEATURE 运行我编译的 Jar 文件时覆盖匹配缓冲区 匹配字符串可以类似于 这是一条垃圾线 ifdef 功能 endif 功能结束 这是一条垃
  • Haskell:处理死锁的自引用列表

    GHC 允许永久阻止以下内容是否有任何有用的理由 list 1 tail list 看起来列表迭代器 生成器有点复杂 我们应该能够做一些更有用的事情 Return error Infinitely blocking list Return
  • 副作用是纯函数中找不到的一切吗?

    可以肯定地说 以下二分法成立 每个给定的函数是 要么纯粹 或有副作用 如果是这样 函数的 副作用就是纯函数中找不到的任何东西 这很大程度上取决于您选择的定义 可以公平地说 函数是pure or impure 纯函数始终返回相同的结果并且不会
  • 如何在 blaze-html 中渲染 blaze-svg 标记

    我想将使用 blaze svg 生成的 svg 图直接包含在使用 blaze html 生成的 html 中 两者都基于 blaze markup 所以我希望它很容易 diagram1 Svg diagram1 try1 Html try1
  • Haskell,范围缩小到无步骤[重复]

    这个问题在这里已经有答案了 为什么在 Haskell 中工作范围不能降低到没有步骤 7 1 gt 但只工作这个 7 6 1 gt 7 6 5 4 3 2 1 Haskell 无法知道您想要执行 1 除非您给出提示 在某些情况下 您可能需要一
  • 如何在 TH 拼接中复制 'name 的行为

    考虑这个 Haskell 文件 LANGUAGE TemplateHaskell OPTIONS GHC fplugin Test Inspection Plugin module Text main where import Test I
  • Haskell 二进制解析

    我一直在尝试在 haskell 中实现一个协议解析器 而且我对这门语言还很陌生 特别是当涉及到 monad 时 我一直在使用binary 0 5 0 2 并描述了协议的标头和所有有效负载 我想要解析的消息如下所示 header payloa
  • 'lens' 的阴谋集团依赖性解析失败

    我刚刚做了一个阴谋更新并尝试从 hackage 安装 lens 这给了我以下错误 cabal install j lens Resolving dependencies Configuring dlist 0 7 0 1
  • “反向”使用 Maybe Monad

    假设我有很多功能 f a gt Maybe a g a gt Maybe a h a gt Maybe a 我想按以下方式组合它们 如果 f 返回 Nothing 则计算 g 如果 g 返回 Nothing 则计算 h 如果其中任何一个计算
  • 为什么haskell中的递归列表这么慢?

    我对 Haskell 很陌生 我在 Haskell 中定义了一个函数 febs Integral a gt a gt a febs n n lt 0 0 n 1 1 n 2 1 otherwise febs n 1 febs n 2 但是
  • Haskell 测量函数性能

    在 Haskell 中 我如何 简单地 测量函数的性能 例如 运行需要多长时间 或者需要多少内存 我知道分析 但是 是否有一种更简单的方法不需要我对代码进行太多更改 测量运行需要多长时间以及需要多少内存是两个独立的问题 即 基准测试和分析
  • 如何组合过滤条件

    过滤器类函数接受一个条件 a gt Bool 并在过滤时应用它 当您有多个条件时 使用过滤器的最佳方法是什么 使用了应用函数 liftA2 而不是 liftM2 因为出于某种原因我不明白 liftM2 在纯代码中如何工作 liftM2 组合
  • 反应性香蕉时间延迟

    我已经查阅了文档反应香蕉 http hackage haskell org package reactive banana 而且我找不到指定明确时间延迟的方法 举例来说 我想采取Event t a并将其所有发生的事件移至未来 1 秒 或获取
  • 我应该使用什么递归方案来重复有效的操作,直到其结果符合某些标准?

    也就是说 我要问的是一个循环 effectful Int gt IO Int effectful n do putStrLn Effect show n return n condition 3 final Int gt IO final
  • 嵌套在其他 monad 中的 IO 操作未执行

    我有一个 foobar IO ParseResult String String ParseResult 是一个在这里定义的 monad https hackage haskell org package haskell src exts
  • 如何处理在组合下发生变化的类型?

    我最近读了一篇非常有趣的论文单调性类型 https infoscience epfl ch record 231867 files monotonicity types pdf其中描述了一种新的 HM 语言 该语言可以跟踪操作之间的单调性
  • 地图不是接受一个函数而列表返回一个列表吗?

    map2 List a gt b gt c gt a gt b gt c map2 List f map2 List f a as bs map f a bs map2 List f as bs 这是我的讲座中的一个示例 它尝试将二元函数应
  • 为什么解析器组合器“seq”用“bind”和“return”定义?

    我正在读这个article http eprints nottingham ac uk 237 1 monparsing pdf关于解析器组合器并且不理解以下内容 他们说使用seq 见下文 导致解析器将嵌套元组作为结果 操作起来很混乱 se
  • 为什么以下内容会并行运行而不是顺序运行?

    给定以下函数evalPair parPair and deepSeq分别 evalPair Strategy a gt Strategy b gt Strategy a b evalPair sa sb a b do a lt sa a b

随机推荐

  • Python Excel 模板读取和重写,维护公式和格式

    我已经查遍了所有内容 但似乎找不到我要找的东西 我在这里找到的所有线索对我来说最终都陷入了死胡同 xlrd xlwt 和 xlutils 几乎可以满足我的需要 但是 基本思想是我需要使用 Python 将简单数据 字符串 写入 Excel
  • 如何在 QML 中集成 QWidget(Qt Quick 2.0)

    我已经关闭了返回 QFrame 的库 我的程序的GUI是用QML Qt Quick 2 0 开发的 我需要将 QFrame QWidget 集成到 QML 的解决方案 笔记 我找到了示例 Qt DIR Examples Qt 5 3 dec
  • Java StringTokenizer,空空标记

    我正在尝试将一个字符串拆分为 29 个标记 stringtokenizer 不会返回空标记 我尝试过 string split 但我相信我做错了什么 String strings line split 29 示例输入 10150 15 58
  • 如何将 MSpec 与 MS Build 集成?

    前几天我看了一个BDD 截屏视频 by 罗布 康纳利 在视频中他展示了如何使用MSpec 所以我下载了它并玩了一下 我现在想要的是整合MSpec使用 MS Build 但我不知道如何 我使用 TFS team build 作为我的 CI 服
  • 正则表达式撇号如何匹配?

    我想添加到此规则匹配撇号 rule re compile r lt gt 我努力了 rule re compile r lt gt 但它认为撇号是行错误 为什么 错误的出现是因为你不能直接使用单个 inside 以及同样单身的 不能在里面使
  • 具有需要存在另一个参数的可选参数

    很简单 我如何初始化params我的 Powershell 脚本的一部分 这样我就可以有一个命令行参数 例如 Get Foo foo1
  • Oracle:创建具有自动增量 id 列的视图

    我创建了一个view填充来自不同表的数据 我用了10 select statements并使用组合这些选择语句的结果UNION ALL 我想添加primary key column以我看来 因为我必须创造XML使用此中的数据的文件view
  • 如何在 C# 中对位图图像应用模糊效果? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 如何在不使用库的情况下在 C 中对图像应用模糊效果 更新的代码 现在更快 需要使用 UNSAFE 关键字 static void Main string args Bitmap
  • 使用单独数据帧中的值重命名列

    我有一个 tibble 其中的列名包含空格和特殊字符 这使得使用起来很麻烦 我想在处理数据时将这些列名称更改为更易于使用的名称 然后在最后将它们更改回原始名称以进行显示 理想情况下 我希望能够将其作为管道的一部分来完成 但是我还没有弄清楚如
  • 如何选择具有当天时间戳的行?

    我试图从数据库表中仅选择今天的记录 目前我使用 SELECT FROM table WHERE timestamp gt DATE SUB now INTERVAL 1 DAY 但这需要过去 24 小时的结果 我需要它只选择今天的结果 忽略
  • ViewPager 嵌套在 ViewPager 中

    我真的是 Android 新手 我将不胜感激对我的课程工作的任何帮助 我需要去做 1 一个Activity中两个ViewPager 不嵌套 2 两个ViewPager 一个ViewPager嵌套在另一个ViewPager中 我发现了类似的问
  • ASP.NET MVC 验证消息未本地化

    我正在使用 ASP NET MVC 4 和不显眼的客户端验证 我的应用程序中的语言是德语 在 web config 文件中定义 如果我有一个必填字段 在我的 Code First 类中配置了数据注释 则客户端验证工作正常 唯一的缺点 消息未
  • 无法将重复值插入到唯一索引中[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 自答问题以供将来参考 如果您有一个已删除并重新添加内容的表 则在插入 ID 等于现有 I
  • 本机模式下 SQL Reporting Services 2008 启动缓慢

    在当天的第一个报告请求时 或者在未知的时间段内没有报告请求时 我们会遇到启动速度缓慢的情况 在 SQL Reporting Server 2005 安装中 我们将设置应用程序池以避免回收 Reporting Services 应用程序 但是
  • 根据缩放级别分组/取消分组 MKAnnotation(并保持快速)

    我有一个地图视图 其中有很多注释 其中大多数彼此非常接近 我想要做的类似于 iOS 上的照片应用程序 当注释彼此太接近时 它们会被分组 每当您缩小时 如果它们相距太远 它们就会取消分组 我见过这个问题已经 但给出的答案并不是我真正想要的 我
  • 在本地主机上使用“meteor mongo”但使用远程数据库

    我正在学习望远镜教程 我创建了一个 client collections myfile js 我在本地主机上 但我正在使用 MongoHQ 上托管的远程数据库启动 Meteor 而不是使用 Meteor 的本地数据库 在本教程中 我被告知通
  • 确保 Android WebView 安全的最佳实践检查列表

    我正在开发一个主要用 Native 编写并支持 Ice Cream Sandwich 的应用程序 但是 我需要添加一些 WebView 关于 WebView 安全性有很多讨论 当我使用 setJavaScriptEnabled true 时
  • 提供存储在 SQLAlchemy LargeBinary 列中的图像

    我想上传一个文件并将其存储在数据库中 我创建了一个 LargeBinary 列 logo db Column db LargeBinary 我读取上传的文件并将其存储在数据库中 files request files getlist fil
  • 使用模式进行部分字符串匹配

    我需要在 R 中编写一个查询来匹配列名称中的部分字符串 我正在寻找类似于 SQL 中的 LIKE 运算符的东西 例如 如果我知道字符串的开头 中间或结尾部分 我会按照以下格式编写查询 LIKE beginning middle 在 SQL
  • 模式匹配是多余的

    Haskell 堆栈构建工具 我有代码 quote Char quote doubleQuote Char doubleQuote isBorder Char gt Bool isBorder quote True isBorder dou