Haskell 中类型安全的“read”

2024-01-11

向你学习 Haskell http://learnyouahaskell.com/making-our-own-types-and-typeclasses讨论以下数据类型:

data Day = Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday   
           deriving (Eq, Ord, Show, Read, Bounded, Enum)  

本书演示了如何使用read将字符串解析为Day type.

$ read "Saturday" :: Day
Saturday

但是,我可以传入非日值,从而导致异常。

$ read "foo" :: Day
*** Exception: Prelude.read: no parse

什么是类型安全的使用方式read在上面的例子中?


除了旧的标准功能外reads@JonPurdy 提到的,还有最近添加的

Text.Read.readMaybe :: Read a => String -> Maybe a

当字符串只包含一个要解析的值时,使用起来更简单。

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

Haskell 中类型安全的“read” 的相关文章

  • 在列表中查找元素及其索引

    我需要让列表的两个元素都满足谓词and这些元素的索引 我可以通过以下方式实现这一点 import Data List findIndices list Int list 3 2 4 1 9 indices findIndices gt 2
  • 为什么我不能声明推断类型?

    我有以下内容 runcount Eq a Num b gt a gt b runcount runcountacc 0 runcountacc Eq a Num b gt b gt a gt b runcountacc n runcount
  • Python 比编译的 Haskell 更快?

    我有一个用 Python 和 Haskell 编写的简单脚本 它读取包含 1 000 000 个换行符分隔的整数的文件 将该文件解析为整数列表 对其进行快速排序 然后将其写入已排序的不同文件中 该文件与未排序的文件具有相同的格式 简单的 这
  • 并行 Haskell - GHC GC 火花

    我有一个正在尝试并行化的程序 带有可运行代码的完整粘贴here http lpaste net 101528 我进行了分析 发现大部分时间都花在findNearest这本质上是一个简单的foldr超过一个大Data Map findNear
  • 检索 Haskell 项目中所有导入的列表

    因此 我的最终目标是通过确保项目导入的所有实体都存在于其声称可以使用的版本中 来评估 cabal 文件中依赖项的准确性 一个好的开始是找到单个源文件使用的所有导入实体的列表 可选地包含有关它们来自何处的信息 我愿意暂时忽略类实例的情况 因为
  • 这个实例有什么问题:ArrowApply Automaton?

    我希望 Automaton 有实例 ArrowApply 但 Control Arrow Transformer Automaton 没有 我认为下面的代码会表现良好 data Automaton b c Auto runAuto b gt
  • Haskell 中的“修复”是什么?为什么“修复错误”会打印无限字符串?为什么“拿 10 美元修复错误”也有同样的作用?

    长话短说 我在看西蒙 佩顿 琼斯的演讲 https www youtube com watch v re96UgMk6GQ 并且当时21 41 https youtu be re96UgMk6GQ t 1301他引用了一句话 我正在解决一个
  • Haskell/Idris 中的开放类型级别证明

    在 Idris Haskell 中 可以通过注释类型并使用 GADT 构造函数 例如使用 Vect 来证明数据的属性 但这需要将属性硬编码到类型中 例如 Vect 必须是与 List 不同的类型 是否有可能拥有具有开放属性集的类型 例如同时
  • Haskell 有 takeUntil 函数吗?

    目前我正在使用 takeWhile x gt x 1 x 89 l 从列表中获取最多为 1 或 89 的元素 但是 结果不包括这些标记值 Haskell 是否有一个标准函数可以提供这种变化takeWhile结果中包含哨兵 到目前为止 我对胡
  • 带有参考的 Haskell 数据类型

    我正在实现 Ukkonen 的算法 该算法要求树的所有叶子都包含对同一整数的引用 并且我在 Haskell 中执行此操作是为了了解有关该语言的更多信息 但是 我很难编写出执行此操作的数据类型 Node has children indexe
  • 如何使用范围内的约束族来证明表达式主体内的实例?

    这是后续我之前的问题 https stackoverflow com questions 70075414 how can i derive typeclass instances from constraint families that
  • 如何给Servant中的所有端点添加前缀?

    我在 Haskell 仆人中有一个 hello world 应用程序 这是其中的一部分 type API my items gt Get JSON MyItem lt gt my items gt Capture id Int gt Get
  • Haskell:先进先出队列算法的复杂性

    这是我对 FIFO 队列的尝试 type Queue a a gt a empty Queue a empty id remove Int gt Queue a gt a Queue a remove n queue take n queu
  • 一个目录中的多个 Haskell cabal-packages

    在一个目录中包含多个 cabal 软件包的推荐方法是什么 Why 我有一个包含许多可分离模块的旧项目 由于最初它们只形成一个程序 因此将它们放在同一目录中以便于编译非常方便 而且现在仍然如此 Options 只是忍受并将所有内容 包括保存内
  • 在没有互联网连接的情况下使用 cabal 安装 Haskell 软件包

    我有一台根本无法访问互联网的机器 我使用通过随身碟从另一台机器获得的安装程序在其上安装了 Haskell 平台 现在我想安装这个包repa在我的家用机器上 无法访问互联网 我该怎么做呢 我的家用计算机运行的是 Linux Debian 我的
  • 模式匹配中的 Monoid mempty

    我尝试写一个通用的maximum功能类似于Prelude 我的第一个天真的方法如下所示 maximum F Foldable a Ord b gt a b gt Maybe b maximum mempty Nothing maximum
  • 哈斯克尔状态单子

    是否putState Monad 的函数会更新实际状态还是仅返回具有新值的新状态 我的问题是 State Monad 可以在命令式设置中像 全局变量 一样使用吗 并且确实put修改 全局变量 我的理解是 不 它不会修改初始状态 但是使用单子
  • 我是否应该使用 GHC Haskell 扩展?

    当我学习 Haskell 时 我发现有很多语言扩展 http haskell org ghc docs latest html users guide ghc language features html在现实生活中使用的代码 作为初学者
  • 当单态限制打开*时,如何解决歧义问题?

    因此 在学习 Haskell 时 我很快就遇到了可怕的单态限制 在 ghci 中 Prelude gt let f print show Prelude gt f 5
  • 绑定变量时 Haskell 中的无限循环

    下面的 Haskell 代码不会终止 有人可以解释一下为什么吗 谢谢 f let x 10 in let x x x in x 我认为解释器首先绑定 x 10 然后将 x x 计算为 100 并绑定 x 100 环境变为 x 100 那么整

随机推荐

  • 如何使用 Laravel 和 Monolog 创建旋转日志文件

    我正在尝试使用 Monolog 在 Laravel 中创建自己的旋转日志文件 但是 文件旋转不起作用 我不知道为什么 我创建了一个每天运行一次的 artisan 命令 并保留其活动日志 我希望 2 天后删除该文件的旧版本 换句话说 只有今天
  • 相邻邻居求和[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如果给我数字 1 2 1 并且我想找到每个数字与其相邻邻居 在环中 重复多次的总和 我可以使用以下公式 base case x 1 y 2 z 1 r
  • 使用角度组件会破坏材质布局

    在 index html 中包含以下内容和一个简单的 ui 路由器状态 该状态将组件加载为模板 div class container div 使用存储在文件中的以下模板定义的组件
  • react-native-webview Typescript 错误:“WebView”无法用作 JSX 组件

    我正在尝试使用 Expo 和 TypeScript 来设置一个简单的 React Native 应用程序 以显示 WebView 我的App tsx文件包含以下内容 import Constants from expo constants
  • 玩!框架 - 创建简单的 html 链接

    我有一个使用多个 HTML 文件和一个 CSS 文件制作的网站 我目前正在尝试切换到 Play 斯卡拉框架 由于某种原因 我很难弄清楚如何将一个 html 页面链接到另一个页面 现在 我的所有 html 文件都保存在 views 文件夹中
  • 我在哪里可以购买 .app TLD? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在哪里可以购买 app 顶级域名 TLD 我去了 Network Solutions GoDaddy 等
  • Nexus 支持批量上传工件吗?

    我想知道我们是否可以将工件批量上传到 Nexus 的存储库中 您可以通过多种方式做到这一点 使用 Nexus工件上传页面 http www sonatype com books nexus book reference ch04s05 ht
  • 触发器:插入的表如何工作?如何访问它的行?

    我有下表 Data Table name ID Identity column PCode Postal Code 我创建了以下触发器 CREATE TRIGGER Trig ON Data FOR INSERT AS BEGIN Sele
  • 为什么我的指令抛出“Error: $injector:unpr Unknown Provider”

    我正在努力将我的控制器 工厂和指令重构为推荐的Angular 风格指南 https github com johnpapa angular styleguide file templates and snippets for 角度片段 ht
  • .NETBeans + 请求范围 - 有可能吗?

    我有我的网络应用程序 我需要 当用户执行请求 我的意思是 调用页面 时 创建一个对象 该对象为每个请求 因此数据在每个请求时更新 和每个用户存储一些信息 它从数据库获取这些信息 所以UserA 与 UserB 不共享相同的对象 我曾经使用
  • 使用 Word 时出现运行时错误 462 Excel VBA

    第二次或第三次运行此循环时 我不断收到 462 错误 我不认为我有任何漂浮的物体 但也许我错过了一些东西 我对此有点陌生 该宏将从 Excel 中获取所有图表 将它们作为图片粘贴到 Word 中 调整它们的大小 保存文档并关闭它 For 循
  • PHP/JS - 动态创建缩略图或存储为文件

    对于图像托管 Web 应用程序 对于我存储的图像 是否可以使用 PHP 或其他方式 动态创建缩略图 或者我应该将 1 个或多个不同大小的缩略图保存到磁盘并加载它们 任何帮助表示赞赏 将缩略图保存到磁盘 图像处理需要大量资源 并且根据图像的大
  • 使用 fread 导入 csv 时出现“字符串中嵌入 nul”错误

    我有一个大文件 3 5G 我试图使用它导入data table fread 它最初是从一个 rpt 文件创建的 该文件以文本形式打开并保存为 CSV 这对于较小的文件 相同类型的数据 相同的列等 效果很好 这只是为了更长的时间范围和更广泛的
  • Chrome、Opera 和 Safari 中 Flash 下弹出弹出菜单

    我在以下位置创建了一个弹出导航菜单 http lixmebel com http lixmebel com gt 在 gt 下 在 Firefox 和 Internet Explorer 中 一切正常 菜单会在 Flash 上弹出 但在 C
  • kafka-console-consumer 自定义反序列化器

    我想使用我的自定义value deserializer使用 kafka console consumer 命令行工具时 像这样的事情 kafka console consumer bootstrap server kafka2 29092
  • 当只有其中之一进行类型检查时,为什么这两个隐式都匹配?

    我正在尝试诊断由不同的隐式扩展错误引起的编译器错误 这是我所看到的 scala Welcome to Scala 2 13 1 OpenJDK 64 Bit Server VM Java 1 8 0 252 Type in expressi
  • 如何循环空手道响应数组并将其传递到另一个 Web 服务响应的 json 路径中

    我正在使用空手道版本 0 8 0 1 我想执行以下步骤来测试一些响应 我做了一个获取网络服务 1 使用 jsonpath 从 Web 服务 1 的响应中查找货币值 currencies 第 2 步给出了以下结果 USD HKD SGD IN
  • 当结果具有相同分数时在 Azure 搜索中进行分页

    我在电子商务网站上使用 Azure 搜索 现在在搜索页面上遇到分页问题 当我重新加载搜索页面时 我可以获得不同的产品顺序 因此 当我使用分页时 我可以在不同页面上看到相同的产品 这一点至关重要 我开始研究出了什么问题 我在 Microsof
  • 从 cakephp 的数组中删除数组键

    打印数组 array Order gt array id gt 1 base price gt 65 min price gt 95 检索数据时是否可以删除键 Order 如果不是 我如何使用 array shift 或以一行结束并防止出现
  • Haskell 中类型安全的“read”

    向你学习 Haskell http learnyouahaskell com making our own types and typeclasses讨论以下数据类型 data Day Monday Tuesday Wednesday Th