无法在 Haskell 中将 IO 字符串转换为 [Char]

2023-12-01

我编写了这个简单的函数,它采用两个文件名(字符串)并将第一个文件的内容写入第二个文件应用toUpper到每个角色。

import Data.Char

ioFile f1 f2 = do
            s <- readFile f1
            sUp <- [toUpper c | c <- s]
            writeFile f2 sUp

但是解释器会报错

Couldn't match expected type ‘IO String’ with actual type ‘[Char]’
In a stmt of a 'do' block: sUp <- [toUpper c | c <- s]
In the expression:
  do { s <- readFile f1;
       sUp <- [toUpper c | c <- s];
       writeFile f2 sUp }
In an equation for ‘ioFile’:
    ioFile f1 f2
      = do { s <- readFile f1;
             sUp <- [toUpper c | c <- s];
             writeFile f2 sUp }

我该如何使用s as a [Char]代替IO String?


你不能绑定像这样的“纯”值sUp <- [toUpper c | c <- s]这边走。请注意,与接受的答案所建议的不同,这并不意味着您不能给它命名。其一,有return将纯值提升为IO(或者任何单子,但我们在IO现在),所以sUp <- return [toUpper c | c <- s] does工作。还有一个 let 语法的变体几乎可以做到这一点:let sUp = [toUpper c | c <- s].

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

无法在 Haskell 中将 IO 字符串转换为 [Char] 的相关文章

  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • Haskell Data.Decimal 作为 Aeson 类型

    是否可以解析一个数据 十进制 https hackage haskell org package Decimal 0 4 2 docs Data Decimal html使用 Aeson 包从 JSON 获取 假设我有以下 JSON foo
  • Haskell:需要了解 Functor 的签名

    有人能给我解释一下 Functor 的签名吗 Prelude gt info Functor class Functor f gt where fmap a gt b gt f a gt f b lt a gt f b gt f a 我不明
  • Haskell 项目可以使用 cmake 吗?

    我正在计划一个用 Haskell 编写的项目 也许也有一些部分是用 C 编写的 对于构建系统 我决定不选择 Haskell 程序 cabal 的常见选择 主要是因为我想了解其他语言的构建程序是如何工作的 我听说过 CMake 我认为这是一个
  • Haskell 处理负参数

    尝试对两个值求和 其中只有一个为负值 例如 1 and 2 soma Float gt Float gt Float soma x1 x2 x1 x2 结果出现错误 为什么
  • Haskell:对 Num 类型类的使用感到困惑

    我很困惑为什么这有效 f Num a gt a gt a f x x 42 但这并没有 g Num a gt a gt a g x x 4 2 我本来就明白Num包含实现运算符的所有类型 因此 如果42 is an Int and 4 2
  • 在 ghci 下执行 `(read "[Red]") :: [Color]` 时会发生什么?

    我正在阅读以下小节现实世界 Haskell 第 6 章 类型类 http book realworldhaskell org read using typeclasses html关于一个实例Read for Color 它实现了reads
  • 自定义 monad 的 MonadTransControl 实例

    的文档monad control提供有关如何创建实例的示例MonadTransControl using defaultLiftWith and defaultRestoreT 该示例适用于以下情况newtype newtype Count
  • 如何使用foldr为列表创建显示实例?

    我想为我的数据类型 我的列表 编写自己的显示实例 到目前为止 我的方法是有效的 但我总是在末尾有一个逗号 我已经尝试用最后一个元素启动折叠并将其从列表中删除 但它很麻烦而且不起作用 有没有更简单的方法来获得正确的解决方案 实际 1 2 3
  • 在 Haskell 中将字符串转换为整数/浮点数?

    data GroceryItem CartItem ItemName Price Quantity StockItem ItemName Price Quantity makeGroceryItem String gt Float gt I
  • Haskell 中的所有内容都存储在 thunk 中吗,甚至是简单的值?

    以下值 表达式 函数的 thunk 在 Haskell 堆中是什么样子的 val 5 is val a pointer to a box containing 5 add x y x y result add 2 val main prin
  • 我可以从 GHCi 中找到 GHC 版本吗?

    gt 我在里面输入什么GHCi发现它正在使用哪个 GHC 版本 gt import System Info gt browse arch String compilerName String compilerVersion Data Ver
  • 并行 Haskell - GHC GC 火花

    我有一个正在尝试并行化的程序 带有可运行代码的完整粘贴here http lpaste net 101528 我进行了分析 发现大部分时间都花在findNearest这本质上是一个简单的foldr超过一个大Data Map findNear
  • 如何让 esqueleto 为我生成 SQL 字符串?

    我怎样才能让esqueleto从a生成一个SQL字符串from陈述 的文档toRawSql说 你可以打开持久的查询日志记录 我尝试了所有可能的形式MonadLogger我可以理解 但它从未打印任何 SQL 同一文档还说 手动使用此功能 是可
  • 优化 Haskell 内循环

    仍在 Haskell 中进行 SHA1 实现 我现在已经有了一个有效的实现 这是内部循环 iterateBlock Int gt Word32 gt Word32 gt Word32 gt Word32 gt Word32 gt Word3
  • 如何与更高级别的类型合作

    玩弄教堂的数字 我遇到了无法指导 GHC 类型检查器处理高阶类型的情况 首先我写了一个版本 没有任何类型签名 module ChurchStripped where zero z z inc n z s s n z s natInteger
  • Haskell 中的内部爆炸模式是否总是强制使用外部构造函数?

    在 Haskell 中 是否存在对于数据类型 LANGUAGE BangPatterns import Control DeepSeq data D D Int 实例 instance NFData D where rnf D 与具有另一个
  • 不同类型的列表?

    data Plane Plane point Point normal Vector Double data Sphere Sphere center Point radius Double class Shape s where inte
  • 在 Haskell 中调试时打印时间戳

    我仍在学习 Haskell 并调试一些函数 并且通常有一个时间戳函数来了解某些操作何时开始和停止 doSomeAction String gt IO doSomeAction arg1 do putStrLn lt lt makeTime
  • 当约束成立时,将没有约束的 GADT 转换为另一个有约束的 GADT

    我们能否将构造函数没有给定约束的 GADT 转换为具有上述约束的 GADT 我想这样做是因为我想要深度嵌入箭头并用 目前 似乎需要的表示做一些有趣的事情Typeable 一个理由 https stackoverflow com a 1223

随机推荐

  • 将 xml 转换为 xls

    我正在寻找有关如何实现将基于 Web 的 XML 数据放入电子表格中的方法的想法 理想的解决方案是在每次打开电子表格时更新电子表格 而无需用户交互 即 我不想告诉人们运行宏 然而 我的第一个想法 可能是我最终会想到的 是一个 Perl 脚本
  • 链接 iframe 以在 Lightbox 中打开

    是否可以使用链接链接到在 lightbox 或 fancybox 中打开的 iFrame 内容 例如 查看我的平面设计画廊 单击此处 gt 从其他站点显示我的画廊的灯箱 可能的 我如何在灯箱 花式箱中对其进行编码 我知道现在这是可能的 但无
  • 在编译时使用自定义类加载器

    是否可以为 javac 或某些替代的 java 编译器 指定自定义类加载器 我很喜欢这样的壮举 因为它允许我编译使用仅由我的特殊类加载器找到的类的类 对于好奇的人 我会编写一个类加载器 它连接到数据库并根据它找到的表创建类 当您运行 jav
  • Android中如何从URL读取json数据

    我对以下代码有一些问题 我正在尝试从以下 Reddit URL 中读取内容 https www reddit com r earthporn json after 这是未正确执行的代码 public static String readCo
  • 如何限制颤振中文本字段的表情符号?

    你好 我正在寻找限制表情符号正则表达式或用于颤振的输入格式化程序 我想禁用文本字段中的表情符号 如果有人有想法 请帮助我 提前致谢 magicleon94 几乎回答了你的问题 但我认为我的答案值得一提 而不是限制不需要的表情符号 其中集合是
  • 如何读取pandas文件夹中的所有csv文件? [复制]

    这个问题在这里已经有答案了 每个月我都会下载 csv 格式的整个分类帐并将其保存到文件夹中 我如何在 pandas 中将其作为单个数据帧读取 福汤姆森的答案但最后一行应该是 import pandas as pd import glob f
  • 对于 SQL Server,我希望仅对非空值建立唯一索引[重复]

    这个问题在这里已经有答案了 可能的重复 具有重复 NULL 的 SQL Server UNIQUE 约束 在 Sql Server 中 我想要一个同时包含空值和实值的列 如果该列有值 我想确保它是唯一的 该列可以有多行且该列为空 例如 假设
  • LexikJWT 通过 token 获取用户个人资料

    使用 LexikJWTAuthenticationBundle FOSRest FOSUser 如何通过令牌获取经过身份验证的用户配置文件 是否可以 假设用户已经通过 LexikJWT 进行了身份验证 并且我有一个 api 端点 例如 ap
  • 这是 python eval() 的安全使用吗?

    如果攻击者可以控制attacker controlled nasty variable 这一段代码容易受到攻击吗 dic one 1 nasty attacker controlled nasty variable store str di
  • 图像在列表视图中随机播放。滚动时

    发生的情况是 当滚动列表时 每个项目上加载的图像都会被打乱 并且每个项目的头像都会转到下一个项目结束 我不知道我是否清楚 但我会用图片来展示 我的自定义适配器类 import android content Context import a
  • 从 jqGrid 的 gridComplete 事件期间创建的按钮调用函数?

    我试图在 gridComplete 事件期间创建的按钮的 onclick 事件中调用一个函数 加载正常 这是第一行中按钮的渲染 html 的样子
  • 匹配数组内的多个条件[重复]

    这个问题在这里已经有答案了 我有以下内容 offers user jon price 200 selected false user ted price 100 selected true 我正在尝试进行匹配 以获取用户被 ted 且选择为
  • 如何使用 DirectoryInfo.GetFiles 并让它在找到第一个匹配项后停止?

    需要搜索目录 子目录来查找文件 希望它在找到文件后停止 这是我缺少的 DirectoryInfo GetFiles 内置功能 还是应该使用其他功能 自行实现的递归搜索 Use DirectoryInfo EnumerateFiles 相反
  • Chrome ARC 中的 Google 地图

    我最近看到 ARC 现在支持一些 Google Play 服务 包括 Google 地图 使用 ARC Welder 时 我指定以下元数据 usePlayServices maps 根据文档here 我还必须在元数据中包含 crx key
  • 由于 403 错误,HPA 无法获取指标

    我在 hpa 中使用了以下指标 apiVersion autoscaling v2beta2 kind HorizontalPodAutoscaler metadata name app svc hpa namespace default
  • .Net TextBox 具有自动完成和自定义排序(非字母顺序)

    我正在搜索具有默认自动完成功能的文本框控件 但建议中的条目应像列表中的项目一样排序 例如 列出项目 ab ac aa bb 如果我在文本框中输入字母 a 建议的项目应按如下方式排序 ab ac aa 不是这样的 aa ab ac 有没有办法
  • Chrome扩展:onclick()事件没有触发alert()弹出窗口[重复]

    这个问题在这里已经有答案了 我无法触发alert 弹出窗口onclick event Code File 清单 json name Project version 1 0 0 manifest version 2 description P
  • 将 Java 库导入到 C# 中

    因此 我已用 C 将代码写入 zip 文件 但是当我导入库时 我有以下内容 Using java util Using java util zip Using java io 但是 这些都用红色下划线表示 并带有错误消息 The type
  • 检查来电号码是否存储在联系人列表中 android

    在我的 Android 应用程序中 当有来电时 我想显示我的自定义用户界面 并且我能够做到这一点 不 我想检查传入号码是否来自联系人 下面是我执行此操作的代码 但对于存储在我的联系人列表中的传入号码 它返回 null public Stri
  • 无法在 Haskell 中将 IO 字符串转换为 [Char]

    我编写了这个简单的函数 它采用两个文件名 字符串 并将第一个文件的内容写入第二个文件应用toUpper到每个角色 import Data Char ioFile f1 f2 do s lt readFile f1 sUp lt toUppe