在 Haskell 中将 Maybe Int 转换为 Int

2024-05-04

我正在编写以下代码,并希望找到框字符串中数字的索引。所以我用了findIndex但它返回Maybe Int值,而我只想要Int value.

我怎样才能转换Maybe Int to Int值或者有什么方法可以提取Int from Maybe Int。如果出现以下情况,代码应打印一条错误消息:Maybe Int is Nothing.

box:: String
box = unlines $ ["0 | 1 | 2",
                 "---------",
                 "3 | 4 | 5",
                 "---------",
                 "6 | 7 | 8"]

moves = do
        putStrLn " Enter the number"
        number <- readLn :: IO Int
        print number
        findpostion number box

findposition number box = findIndex (==number) box

您可以使用模式匹配轻松地做到这一点do陈述:

case findposition number box of
  Just n  -> -- do whatever with n
  Nothing -> putStrLn "Invalid number!" -- you can handle the error however you want.

一个好的选择是创建一个单独的 IO 操作来获取数字:

getNumber = do putStrLn "Enter the number:"
               number <- readLn
               case findposition number box of
                 Just n  -> -- Do whatever
                 Nothing -> putStrLn "Please try again." >> getNumber

这样,如果用户输入无效号码,它只会再次询问。

另外,正如现在所写,您的代码将无法工作。您应该有其他方法来存储数字box作为实际数字;现在,它们在 Strings 中。

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

在 Haskell 中将 Maybe Int 转换为 Int 的相关文章

  • 绑定变量时 Haskell 中的无限循环

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

    我正在尝试设置 yesod 网络服务器的临时实例 我想知道是否有一些简单的方法可以使整个站点受到密码保护 具体来说 我希望能够提示那些导航到我的网站的人提供凭据 经过身份验证后 它应该像典型站点一样运行 但如果他们无法验证自己的身份 他们就
  • 为什么这会导致 Haskell Conduit 库内存泄漏?

    我有一个conduit https hackage haskell org package conduit管道处理长文件 我想每 1000 条记录为用户打印一份进度报告 所以我这样写 Every n records perform the
  • 我们不应该使用单子绑定来使用循环写下 mfix 的情况

    我一直在尝试写mfix向下使用Control Arrow loop https hackage haskell org package base 4 14 0 0 docs src Control Arrow html loop 我想出了不
  • 为什么 GeneralizedNewtypeDeriving 没有安全的 Haskell?

    来自 GHC 手册 第安全语言 http www haskell org ghc docs 7 6 2 html users guide safe haskell html safe language 模块边界控制 使用安全语言编译的 Ha
  • 副作用是纯函数中找不到的一切吗?

    可以肯定地说 以下二分法成立 每个给定的函数是 要么纯粹 或有副作用 如果是这样 函数的 副作用就是纯函数中找不到的任何东西 这很大程度上取决于您选择的定义 可以公平地说 函数是pure or impure 纯函数始终返回相同的结果并且不会
  • 算法 - 如何有效删除列表中的重复元素?

    有一个list L 它包含以下元素任意类型each 如何有效删除此类列表中的所有重复元素 必须保留订单 只需要一个算法 因此不允许导入任何外部库 相关问题 在Python中 从列表中删除重复项以使所有元素都是唯一的最快算法是什么在维持秩序的
  • Haskell 二进制解析

    我一直在尝试在 haskell 中实现一个协议解析器 而且我对这门语言还很陌生 特别是当涉及到 monad 时 我一直在使用binary 0 5 0 2 并描述了协议的标头和所有有效负载 我想要解析的消息如下所示 header payloa
  • 如何获取常量内存中的统计数据

    我有一个函数 它会创建一些随机的数值结果 我知道 结果将是 a 小 a b 约 50 范围内的整数a b 我想创建一个执行上述函数 1000000 次的函数 并计算每个结果出现的频率 该函数使用随机生成器来生成结果 问题是 我不知道如何在常
  • 是否有一个基于对象身份的、线程安全的记忆库?

    我知道记忆化似乎是堆栈溢出的 haskell 标签上的一个长期话题 但我think以前没有人问过这个问题 我知道 Haskell 有几个不同的 现成 记忆库 memo combinators 和 memotrie 包 利用涉及惰性无限数据结
  • GHC 是否使用存在类型的动态调度?

    下面的代码是否使用了 C 或 Java 中所理解的动态调度 据我了解 在最后一行 编译器不可能在编译时知道要调用哪个 实现 但代码会编译并产生正确的结果 有人可以解释一下 这背后有什么样的实现 例如 vptr 吗 LANGUAGE Exis
  • 处理许多不相关的类型时避免样板

    我正在编写处理以下值的代码语言 扩展 注释 语法 http hackage haskell org packages archive haskell src exts 1 1 4 doc html Language Haskell Exts
  • 在 haskell 中处理 IO 与纯代码

    我正在编写一个shell脚本 我在haskell中的第一个非示例 它应该列出一个目录 获取每个文件大小 进行一些字符串操作 纯代码 然后重命名一些文件 我不确定我做错了什么 所以有两个问题 我应该如何安排这样的程序中的代码 我有一个具体问题
  • 解析 PHOAS 表达式

    我想我理解 PHOAS 参数化高阶抽象语法 我明白了如何漂亮地打印一个表达式 参见http www reddit com r haskell comments 1mo59h phoas for free by edward kmett cc
  • 如何处理在组合下发生变化的类型?

    我最近读了一篇非常有趣的论文单调性类型 https infoscience epfl ch record 231867 files monotonicity types pdf其中描述了一种新的 HM 语言 该语言可以跟踪操作之间的单调性
  • 使用 Haskell 将函数注入到 Java .class 文件中

    我使用 Haskell 编写了一个 Java 字节码解析器 它工作得很好 然而下一步让我完全难住了 我的 Haskell 程序需要修改 class 文件 以便在执行时 Java 程序打印 输入 此处的方法名称 在执行方法之前 并且 退出 此
  • 将名称绑定到值与将值分配给变量

    阅读 Bartosz Milewski 的文章完整的 https www fpcomplete com school starting with haskell basics of haskell 3 pure functions lazi
  • Haskell 类型定义,=> 等

    我正在使用 Learn You a Haskell 来学习 Haskell 第 54 页上有一个 像这样执行 take Num i Ord i gt i gt a gt a take n n lt 0 take take n x xs x
  • 为什么以下内容会并行运行而不是顺序运行?

    给定以下函数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
  • Haskell 中的多态函数作为参数

    我有一个带有两个构造函数的 ADT 一个包裹着一个Double和一个包裹着Integer 我想创建一个函数 它采用一元函数Numtypeclass 并返回一个函数 该函数将该一元函数应用于我的 ADT 的内容 我试过这个 data X Y

随机推荐

  • 线程同时打印会弄乱文本输出

    我在应用程序中使用 4 个线程 它们返回我想要打印给用户的文本 由于我想避免线程独立打印这些文本 因此我创建了一个类来管理它 我不知道我在这里做错了什么 但它仍然不起作用 您可以在下面看到代码 from threading import T
  • 有哪些用例可以证明 310 OffsetDatetime 的合理性?

    偏移日期 http threeten sourceforge net apidocs javax time calendar OffsetDate html表示带有区域偏移的日期 我不明白这个类的用途 证明它存在的主要用例是什么 在分析日期
  • 已弃用的代码: vs style="font-weight:bold;"

    我一直用 b 标记为粗体 因为这是我很久以前就被教做的方式 但现在我的 IDE 总是告诉我 b 已弃用并使用 css 样式 假设他们希望我使用 div style font weight bold Bold Text div 我的 IDE
  • MongoDB 中的游标是什么?

    我们对最终发生的事情感到困扰cursor not found exceptions对于一些 Morphia 查询asList http mongodb github io morphia 1 0 guides querying 我找到了一个
  • 在 Hadoop 中处理带标头的文件

    我想在 Hadoop 中处理很多文件 每个文件都有一些头信息 后面跟着很多记录 每个记录都存储在固定数量的字节中 对此有何建议 我认为最好的解决方案是编写一个自定义的InputFormat http hadoop apache org co
  • 声明指令 templateUrl 相对于 root

    我目前正在声明相对于当前窗口位置的 templateUrl cvApp directive personalDetails function return restrict A templateUrl Scripts app templat
  • Tensorflow lite 目标检测示例中相机的屏幕尺寸 [水平屏幕]

    在tensorflow lite示例对象检测中 相机不会拍摄整个屏幕 而只会拍摄一部分 我试图在 CameraActivity CameraConnectionFragment 和 Size 类中找到一些常量 但没有结果 所以我只是想要一种
  • Android:Notification.DEFAULT_VIBRATE是否需要振动权限?

    有时我读到 notification defaults Notification DEFAULT VIBRATE and notification defaults Notification DEFAULT ALL 需要振动权限
  • 从 WebAPI 发送大文件。内容长度为 0

    我正在尝试将大文件 GB 从一个WebAPI NET Core 发送到另一个WebApi Net Core 我已经设法发送较小的文件作为多部分请求的一部分 就像上一篇文章中那样 link https forums asp net t 209
  • 无法自省类 [org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration]

    我使用 spring boot 2 1 1 创建了一个项目 当我尝试提升它时 出现以下错误 2018 12 10 19 23 14 837 ERROR 8096 main o s boot SpringApplication 应用程序运行失
  • UTF-8 和 Unicode,0xC0 和 0x80 是什么意思?

    在过去的几天里 我一直在阅读有关 Unicode 和 UTF 8 的内容 并且经常遇到与此类似的按位比较 int strlen utf8 char s int i 0 j 0 while s i if s i 0xc0 0x80 j i r
  • 使用sql将行转换为列,反之亦然 - oracle

    我有这张表 create table history date check DATE type VARCHAR2 30 id type NUMBER total NUMBER 正在选择 select from history order b
  • 是否可以通过证书仅保护一个 Spring Boot Rest 端点?

    有关架构的一些信息 我们正在 Cloud Foundry 中运行 使用 https 路由 我们有一个网关 Spring Cloud Netflix zuul 我们的应用程序由令牌进行内部保护 如果您需要其他信息 请询问 现在我们想要保护网关
  • 警告:c 中指针和整数之间的比较[默认启用]

    我想检查用户输入是否仅包含数字 所以 我使用以下代码 for i 0 argv 1 i NULL i if isdigit argv 1 i printf Error return 1 它工作得很好 但我收到了这个警告 warning co
  • 预计来电次数:>= 1 已接来电次数:0

    我正在学习带有钩子的reactjs表单 现在我想使用jest和enzyme测试提交时的表单 这是我的登录组件 import React from react function Login const email setEmail useSt
  • 弹性项目的等高子项

    我在创建 Flexbox 响应式网格时遇到问题 希望有人能给我指出正确的方向 我想要所有的 blockdiv 的高度相等 并且 bottomdiv 绝对定位到底部 这实际上在当前的解决方案中有效 但是当 的时候h2标题太长 达到了2行 我想
  • 如何定义基于标签的组织结构?

    原标题 有没有办法在基于标签的组织方法上强制建立关系结构 我有一些实体 它们有一系列属性 一些属性影响实体可以具有的其他属性 许多属性被组织成组 并且有时实体被要求具有来自某些组的一定数量的属性 或者可能具有来自某些组的一定范围的属性 有没
  • 如何通过j2me api解析包含负数的字符串?

    我有一个带有数字的字符串 我必须解析这个字符串并将这些数字存储在 int float 等中 相应地 String str 100 2 0 100 19 99 0 我可以这样做Integer parseInt and Float parseF
  • 纯函数可以异步吗?

    在浏览纯函数的定义时 它通常定义有两个特征 1 给定相同的输入应该产生相同的输出 2 不应产生任何副作用 这是否也意味着纯函数不应该是异步的 如果不是 怎么会这样 如果是的话 我很想看到 JavaScript 中异步纯函数的一些示例 是的
  • 在 Haskell 中将 Maybe Int 转换为 Int

    我正在编写以下代码 并希望找到框字符串中数字的索引 所以我用了findIndex但它返回Maybe Int值 而我只想要Int value 我怎样才能转换Maybe Int to Int值或者有什么方法可以提取Int from Maybe