Haskell 中如何实现列表推导式?

2023-12-21

  • 列表推导式只是一种语言功能吗?
  • 使用纯 Haskell 伪造列表理解的最简单方法是什么?
  • 你必须使用 do 块/>>=来做到这一点或者你可以使用其他一些 将列表理解结合在一起的方法?

澄清:“伪造”列表理解是指创建一个接受相同输入并产生相同输入的函数,即返回值的形式、要一起处理的列表以及一个或多个谓词。


第3.11节 http://www.haskell.org/onlinereport/exps.html#list-comprehensionsHaskell 报告中准确描述了列表推导式的含义,以及如何将它们翻译掉。

如果你想要 monad 理解,你基本上需要替换[e] by return e, [] by mzero, and concatMap by (>>=)在翻译中。

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

Haskell 中如何实现列表推导式? 的相关文章

  • 模式匹配中的 Monoid mempty

    我尝试写一个通用的maximum功能类似于Prelude 我的第一个天真的方法如下所示 maximum F Foldable a Ord b gt a b gt Maybe b maximum mempty Nothing maximum
  • 为什么Haskell没有split函数? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在许多语言中 都有一个函数可以使用指定的分隔符将字符串分成几部分 它经常被称为split 您可以在 Python C Java JavaScri
  • 镜头中的观看和使用有什么区别?

    有什么区别 view MonadReader s m gt Getting a s a gt m a and use MonadState s m gt Getting a s a gt m a in 控制镜头吸气剂 https hacka
  • 绑定变量时 Haskell 中的无限循环

    下面的 Haskell 代码不会终止 有人可以解释一下为什么吗 谢谢 f let x 10 in let x x x in x 我认为解释器首先绑定 x 10 然后将 x x 计算为 100 并绑定 x 100 环境变为 x 100 那么整
  • Haskell:如何创建将函数应用于元组项的最通用函数

    这是一个个人练习 旨在更好地理解 Haskell 类型系统的局限性 我想创建最通用的函数 将某些函数应用于 2 条目元组中的每个条目 例如 applyToTuple fn a b fn a fn b 我试图让这个函数在以下每种情况下都起作用
  • 为什么 GeneralizedNewtypeDeriving 没有安全的 Haskell?

    来自 GHC 手册 第安全语言 http www haskell org ghc docs 7 6 2 html users guide safe haskell html safe language 模块边界控制 使用安全语言编译的 Ha
  • 计算/获取分层数据的“级别”

    好吧 我真的不知道这是否是正确的标题 但我不知道如何称呼它 我的问题是关于我的作业 我现在已经工作了几个小时 主题是 函数式数据结构 我有点陷入困境 我不知道如何继续 所以我需要编写一个具有以下签名的函数 data Heap e t Hea
  • 如何在 blaze-html 中渲染 blaze-svg 标记

    我想将使用 blaze svg 生成的 svg 图直接包含在使用 blaze html 生成的 html 中 两者都基于 blaze markup 所以我希望它很容易 diagram1 Svg diagram1 try1 Html try1
  • Haskell 真的是纯粹的吗(有任何语言可以处理系统外的输入和输出)吗?

    在谈到函数式编程中的 Monad 后 该功能是否真的使语言变得纯粹 或者它只是黑板数学之外的现实世界中计算机系统推理的另一张 免狱卡 EDIT 这不是有人在这篇文章中所说的火焰诱饵 而是一个真正的问题 我希望有人能用它来击倒我并说 证明 它
  • 表达式“ap zip tail”如何工作

    我想知道怎么写f x zip x tail x 点免费 所以我使用了pointfree程序 结果是f ap zip tail ap作为 Control Monad 的函数 我不明白点自由定义是如何工作的 如果我能从类型的角度去理解的话 希望
  • 如何在 Haskell 中枚举递归数据类型?

    这篇博文 http lukepalmer wordpress com 2008 05 02 enumerating a context free language 对于如何使用 Omega monad 对角枚举任意语法有一个有趣的解释 他提
  • Haskell 二进制解析

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

    要声明常量变量 我可以在 Ruby 中执行以下操作 class COLOR RED 10 BLUE 20 GREEM 30 end COLOR RED回报10 COLOR BLUE回报20 等等 我如何在 Haskell 中实现这一点 我想
  • “反向”使用 Maybe Monad

    假设我有很多功能 f a gt Maybe a g a gt Maybe a h a gt Maybe a 我想按以下方式组合它们 如果 f 返回 Nothing 则计算 g 如果 g 返回 Nothing 则计算 h 如果其中任何一个计算
  • 是否有一个基于对象身份的、线程安全的记忆库?

    我知道记忆化似乎是堆栈溢出的 haskell 标签上的一个长期话题 但我think以前没有人问过这个问题 我知道 Haskell 有几个不同的 现成 记忆库 memo combinators 和 memotrie 包 利用涉及惰性无限数据结
  • 将 Either 列表转换为其中包含列表的 Either 列表

    我是 Haskell 的初学者 我正在编写一些使用 Haskell 的代码Either https hackage haskell org package base 4 9 0 0 docs Data Either html用于错误处理 E
  • GHC 是否使用存在类型的动态调度?

    下面的代码是否使用了 C 或 Java 中所理解的动态调度 据我了解 在最后一行 编译器不可能在编译时知道要调用哪个 实现 但代码会编译并产生正确的结果 有人可以解释一下 这背后有什么样的实现 例如 vptr 吗 LANGUAGE Exis
  • 有什么方法可以在 do / while / let 块中打印出变量的类型吗?

    有没有办法打印出嵌套变量的推断类型ghci 考虑代码 let f g where g x Int x 那么 最好查询一下类型g e g t f g会打印出Int gt Int 您可以通过给出适当的错误类型注释并检查错误消息来诱骗此信息 Ma
  • 管道中缺少 ResourceT 实例

    我在尝试使用时遇到奇怪的错误ResourceT http hackage haskell org package conduit 1 0 9 1 docs Data Conduit html t 3aResourceT来自管道 1 0 9
  • 为什么 Haskell 中的点是从右向左排列的?

    如果我们有两个函数 f and g 然后在哈斯克尔h f g相当于h x f g x IE 这些函数从右到左应用于输入 有什么根本原因可以解释为什么它是从右到左 而不是从左到右吗 IE 他们为什么不做h f g相当于h x g f x 反而

随机推荐

  • 识别 C/C++ 中未使用的函数 [重复]

    这个问题在这里已经有答案了 可能的重复 在大型 C 遗留应用程序中查找 死代码 https stackoverflow com questions 2380153 finding dead code in a large c legacy
  • wpf 组合框 selectedIndex=0 不起作用

    xaml
  • 什么时候可以将结构安全地散列为字节数组?

    对于相等意味着每个数据成员的相同的最派生类型和字节相等的结构 何时 如果有 可以将该结构安全地散列为字节数组 这个文件 http www open std org jtc1 sc22 wg21 docs papers 2012 n3333
  • 诗歌配置无效 - 不允许附加属性(“组”是意外的)

    最近 我在诗歌方面遇到了这个问题 我所有使用诗歌的命令都失败并出现以下错误 RuntimeError The Poetry configuration is invalid Additional properties are not all
  • 如何从 torrent 跟踪器响应中获取对等列表

    我正在制作一个种子客户端 我解码 torrent 文件并将此请求发送到跟踪器 http tracker mininova org announce uploaded 0 downloaded 0 compact 0 event starte
  • 为什么函数式语言如此大量地使用列表?

    我的意思是 列表相对于其他数据结构有哪些优势 使其在函数式语言中几乎不可避免 没有勺子 如果我告诉你没有字符串这样的东西怎么办 仅存在单个字符的列表 那么如果我告诉你不存在列表这样的东西呢 仅存在对 construct a pair of
  • Visual Studio Code 无法在 WSL 2 上运行/工作

    不知怎的 当我跑步时code 在 WSL 内部 它根本不执行任何操作 如果我which code它确实返回了 Windows 上的 VS Code 路径 但仍然没有任何反应 经过一番研究 真正解决我问题的是 在 WSL 终端中 运行rm r
  • 用于返回合格子节点值的字符串串联的 XPath

    任何人都可以建议一种 XPath 表达式格式 该格式返回一个字符串值 其中包含元素的某些合格子节点的串联值 但忽略其他值 div This text node should be returned em And the value of t
  • UIGestureRecognizer 导致循环保留?

    我在想 如果你将目标指定为self在手势识别器中initWithTarget action 方法 会引起循环retain吗 自从self将保留识别器self gestureRecognizers并且手势识别器也有可能将自身保留在initWi
  • 在类方法中使用 self

    我在 ShareKit 中遇到了这段代码 我不明白作者的想法 使用self在类方法中 有警告 不兼容的指针类型将 Class 发送到参数类型id
  • 用户在权限屏幕上单击“允许”后启动活动

    我的一项活动需要位置许可 我编写了下面的代码来获得许可 但在这种情况下 如果应用程序最初没有位置权限 则用户需要单击两次才能打开活动 我可以进行一些更改 以便一旦用户在 权限 屏幕上单击 允许 只有然后意图才会触发 int PERMISSI
  • 我无法将信息从表单输入到数据库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 询问代码的问题必须对所解决的问题表现出最低限度的了解 包括尝试的解决方案 为什么它们不起作用以及预期结果 也可以看看 Stack Over
  • 如何检查 keras 训练是否已经在 GPU 中运行?

    有时我会犯一个错误 尝试在同一个 GPU 两个不同的脚本 中使用 keras 同时运行两个训练 导致我的机器崩溃或破坏两个训练 我希望能够在我的脚本中测试是否有一些训练正在运行 因此可以更改 GPU 或停止新的训练 我发现寻找答案的唯一提示
  • 无法在 vba IE 中应用正则表达式

    我使用vba结合IE编写了一个脚本来解析应用程序网页中的联系信息regex在上面 我进行了很多搜索 但找不到任何可以满足我的要求的示例 这pattern可能并不理想地找到phone号 但这里主要关心的是我如何使用pattern在 vba I
  • 在 C# 中解析原始 Protocol Buffer 字节流

    给定一个协议缓冲区编码Stream or byte 但不知道对象类型本身 我们如何打印消息的骨架 该用例用于调试基于 protobuf 的 IO 以进行根本原因分析 如果有现有的工具可以从二进制文件中解析原始 Protocol Buffer
  • 如何滚动到英国底部?

    我使用 PhoneGap 开发了一款应用程序 在我的应用程序中 我使用在列表视图中显示了许多元素ui li 这里我想滚动到列表中的最后一个元素 为此 我使用了以下代码 dates li last addClass active li foc
  • ScriptManager.RegisterClientScriptIninclude 在 UpdatePanel 中不起作用

    我已浏览网络 但尚未找到以下问题的解决方案 我有这个示例页面 ScriptManager aspx ScriptManager an UpdatePanel a MultiView有两个Views和两个LinkButtons两个视图之间切换
  • 如何在build.gradle中指定Android应用程序支持的架构?

    我的Android应用程序仅支持arm64 v8a和armeabi v7a 但是 由于依赖项之一 我在 apk 的 lib 文件夹中看到以下内容 arm64 v8a armeabi armeabi v7a mips x86 x86 64 这
  • NSURLSession用于网络图片下载+缓存

    有许多第三方库用于加载网络图像 然后将其存储到磁盘和 或内存中 然而它是好简单使用简单的 NSURLSession API 调用来实现它 这是代码 NSURLCache myCache NSURLCache alloc initWithMe
  • Haskell 中如何实现列表推导式?

    列表推导式只是一种语言功能吗 使用纯 Haskell 伪造列表理解的最简单方法是什么 你必须使用 do 块 gt gt 来做到这一点或者你可以使用其他一些 将列表理解结合在一起的方法 澄清 伪造 列表理解是指创建一个接受相同输入并产生相同输