Haskell 列表的嵌套笛卡尔积

2024-04-13

我想创建一种方法,可以给它一个长度列表,它会返回达到这些长度的笛卡尔坐标的所有组合。用一个例子更容易解释:

cart [2,5]
Prelude> [ [0,0],[0,1],[0,2],[0,3],[0,4],[1,0],[1,1],[1,2],[1,3],[1,4] ]

cart [2,2,2]
Prelude> [ [0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1] ]

简单的列表理解不起作用,因为我不知道列表有多长。虽然我喜欢 Haskell 解决许多问题的简单性,但我可以在 5 分钟内以程序方式(用 C 或其他语言)编写这个问题,而 Haskell 却给我带来了动脉瘤!

这个具体问题的解决方案会对我有很大帮助;我也很想听听您在处理此类问题时的思维过程。


Umm..

cart = sequence . map (enumFromTo 0 . subtract 1)

可以合理地预期[[a]] -> [[a]]执行我们期望的功能已经存在于库中。所以如果有人不熟悉sequence,找到它是一个简单的问题hoogling http://haskell.org/hoogle/?hoogle=%5b%5ba%5d%5d+-%3E+%5b%5ba%5d%5d it.

Edit:正如 newacct 指出的:

cart = mapM (enumFromTo 0 . subtract 1)

这也可以通过将之前的解决方案输入到HLint http://community.haskell.org/~ndm/hlint/.

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

Haskell 列表的嵌套笛卡尔积 的相关文章

  • Haskell:Data.Numbers.Primes 库在哪里?

    我尝试导入 Data Numbers Primes import Data Numbers Primes 伦哈斯克尔给了我 5 hs 1 8 Could not find module Data Numbers Primes Use v t
  • 你能识别 Haskell 程序中的无限列表吗? [复制]

    这个问题在这里已经有答案了 可能的重复 如何判断列表是否是无限的 https stackoverflow com questions 7371730 how to tell if a list is infinite 在Haskell中 你
  • 这个对自身单位的列表理解是如何工作的?

    在 haskell IRC 频道中有人问 是否有一种简洁的方法来定义一个列表 其中第 n 个条目是之前所有条目的平方和 我认为这听起来像一个有趣的谜题 递归定义无限列表是我真正需要练习的事情之一 所以我启动了 GHCi 并开始尝试递归定义
  • 在 monad 转换器类型类中使用列表 monad?

    我的目标是创建一个在 ReaderT WriterT 堆栈或 RWS 堆栈中使用列表 monad 的函数 更一般地说 如何在 mtl 类型类 例如 MonadReader MonadWriter 中使用列表 monad 我为什么要尝试这样做
  • 在 Haskell 中合并两个列表

    无法弄清楚如何合并两个列表通过以下方式在哈斯克尔 INPUT 1 2 3 4 5 11 12 13 14 OUTPUT 1 11 2 12 3 13 4 14 5 我想提出一个更懒的合并版本 merge ys ys merge x xs y
  • 在另一个字符串中查找子字符串的索引 Haskell

    我要创建一个带有两个参数 字符串 的函数 该函数应查看第一个参数是否是第二个参数的子字符串 如果是这种情况 它将返回每个出现的元组 其中包含子字符串的起始索引和子字符串的结尾索引 例如 f String gt String gt Int I
  • 纯 Haskell 代码需要线程池吗?

    In 现实世界 Haskell 第 28 章 软件事务内存 http book realworldhaskell org read software transactional memory html 开发了一个并发网络链接检查器 它获取网
  • Control.Parallel.Strategies 中 Eval 的绑定运算符如何严格评估其参数?

    Control Parallel Strategies 的源代码 http hackage haskell org packages archive parallel 3 1 0 1 doc html src Control Paralle
  • Haskell 处理负参数

    尝试对两个值求和 其中只有一个为负值 例如 1 and 2 soma Float gt Float gt Float soma x1 x2 x1 x2 结果出现错误 为什么
  • 在 ghci 下执行 `(read "[Red]") :: [Color]` 时会发生什么?

    我正在阅读以下小节现实世界 Haskell 第 6 章 类型类 http book realworldhaskell org read using typeclasses html关于一个实例Read for Color 它实现了reads
  • Python 列表理解不适用于 itertools.groupby 解码

    我正在尝试解码结果itertools groupby到一个值列表中 我的来源是 x 1 2 2 1 6 3 6 5 1 3 最初的方法是使用 for 语句来实现 如下所示 keyfunc itemgetter 0 groups unique
  • Data.Array 有多快?

    The 文档 http haskell org ghc docs latest html libraries array 0 3 0 3 Data Array html of Data Array reads Haskell 提供了可索引数
  • 你将如何在 Haskell 中(重新)实现迭代?

    iterate a gt a gt a gt a 你可能知道 iterate是一个接受函数和起始值的函数 然后它将函数应用于起始值 然后将相同的函数应用于最后的结果 依此类推 Prelude gt take 5 iterate 2 2 2
  • Haskell 中多核编程的现状如何?

    Haskell 中多核编程的现状如何 现在有哪些项目 工具和库可用 有哪些经验报道 2009年至2012年期间 发生了以下事件 2012 从 2012 年开始 并行 Haskell 状态更新开始出现在并行 Haskell 摘要 http w
  • 使用 Haskell 绘制图表

    是否可以使用 Haskell 绘制一个简单的图表 你们中的任何人都可以告诉我该怎么做吗 该图应至少包含 3 个点 Haskell 图表 https github com timbod7 haskell chart似乎不错 The wiki
  • Haskell / cabal 包的解决方法受到 Nix 和 Cabal 的限制?

    我最近开始开发反射平台 https github com reflex frp reflex platform 有一些额外的配置类似于优秀的反射项目骨架 https github com ElvishJerricco reflex proj
  • 如何让 esqueleto 为我生成 SQL 字符串?

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

    我目前正在研究 Python 中的 Project Euler Problem 53 该解决方案非常简单 但涉及以下列表理解 scipy misc comb n r exact True for n in range 1 maxn 1 fo
  • 检索 Haskell 项目中所有导入的列表

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

    仍在 Haskell 中进行 SHA1 实现 我现在已经有了一个有效的实现 这是内部循环 iterateBlock Int gt Word32 gt Word32 gt Word32 gt Word32 gt Word32 gt Word3

随机推荐

  • 在与表单相同的模态窗口中加载 php 成功消息

    您好 我正在尝试让我的 php 表单成功 或错误 消息加载到表单实际所在的模态窗口中 我想只在模态中打开表单 而不必以任何原因切换页面 我一直在搜索 S O 但找不到类似的东西 也许我没有问正确的问题 我不知道 我的代码目前如下所示 编辑
  • 抽象 CRUD 控制器是个好主意吗?

    我们正在使用 ASP NET MVC 开发一个相当大的应用程序 一开始我们发现拥有一个具有常见 CRUD 操作 新建 保存 删除 以及默认列表操作的抽象基本控制器可能很有用 在我们的例子中 我们有 20 多个实体通过这种控制器进行管理 这有
  • HTML 代码检查 PhpStorm 中分成多个文件的块

    有没有办法告诉 PhpStorm 仅评估 header php 和 footer php 就像浏览器在运行 index php 时所做的那样 考虑一个包含 4 个文件的项目 index php 服务器端内容 业务逻辑 header php
  • Android:如何检测用户何时停止对着麦克风说话

    我有一个 Android 应用程序 在应用程序启动时开始从麦克风录音 在我当前的版本中 用户必须按 停止 按钮才能停止录制 如何检测用户已停止说话并使用它来触发录音机停止 类似于 Android 中语音识别功能的实现 用户停止说话 然后语音
  • 使用类似“标签”的单元格设置集合视图

    我一直在与客户合作UICollectionViewFlowLayout调整细胞之间的空间 这样我就可以在我的细胞中获得良好的流动collectionView 但使用我当前的代码 我无法弄清楚如何在不 破坏 行数的情况下调整单元格大小 这使得
  • Haskell 中模拟对象的身份

    用面向对象的语言编写模拟时 每个对象都有一个标识 即一种将其与模拟中的其他对象区分开来的方法 即使其他对象具有完全相同的属性 一个对象无论随着时间的推移发生了多大的变化 都会保留其身份 这是因为每个对象在内存中都有唯一的位置 我们可以用指针
  • 在 nginx 重写中发送额外的标头

    现在 我正在将我的应用程序的域从app example com to app newexample com使用以下内容nginx config server server name app example com location app
  • Excel 单元格值作为字符串不会存储为字符串

    我无法在此处获取此代码来获取单元格内容并将其存储为字符串 我得到一个双倍 54 6666666667代替N03 DM 示例单元格内容 如果我使用Cstr Sheet1 Cells i 5 Value 我仍然得到相同的结果 任何帮助 将不胜感
  • Jquery-nice-select 插件无法正常工作

    我正在使用 Jquery nice select 插件 http hernansartorio com jquery nice select http hernansartorio com jquery nice select 我有两个选择
  • 具有非常大的数字的十六进制到 int C#

    我有一个 256 个字符长的字符串 其中包含一个十六进制值 EC851A69B8ACD843164E10CFF70CF9E86DC2FEE3CF6F374B43C854E3342A2F1AC3E30C741CC41E679DF6D07CE6
  • 浏览器使用什么启发式方法来缓存未明确设置为可缓存的资源?

    13 2 2 启发式到期 由于源服务器并不总是提供明确的过期时间 因此 HTTP 缓存通常会分配启发式过期时间 并采用使用其他标头值 例如上次修改时间 的算法来估计合理的过期时间 HTTP 1 1 规范没有提供具体的算法 但确实对其结果施加
  • 如何在UITextView iPhone应用程序中控制复制、粘贴、全选、定义?

    我正在使用 UITextView 在 iPhone 应用程序中工作 我想要允许用户只能复制消息和粘贴消息 But i 不想显示全选 选择 定义等 我按照下面的代码来控制选项 但是 所有选项都显示在 UITextView 单击中 BOOL c
  • Excel-VBA。移动公式而不复制它们

    我从我的宏中获取了以下代码 该代码运行良好 Cells curRow M Copy Range N curRow R curRow PasteSpecial Paste xlPasteFormulas 我想问一下有没有办法可以移动公式而不需
  • 两种方式将 wpf datagrid 绑定到数据库

    HI all 我想以两种方式绑定 WPF 数据网格 我尝试过以下 XAML
  • 为什么 UITextField.text 是可选的?

    它开始时是一个空字符串而不是 nil 即使它被显式设置为 nil 它仍然是一个空字符串 我不明白 也许是为了通过分配 nil 来轻松清除 用它编写代码很笨拙 var textField UITextField print textField
  • HTML5 画布元素上的子像素抗锯齿文本

    我对画布元素抗锯齿文本的方式有点困惑 希望你们都能提供帮助 在下面的屏幕截图中 顶部的 Quick Brown Fox 是一个 H1 元素 底部的元素是一个画布元素 上面渲染有文本 在底部 您可以看到两个 F 并排放置并放大 请注意 H1
  • 在 Android 中下载并解压 Zip 文件 [重复]

    这个问题在这里已经有答案了 我的应用程序正在从服务器下载 zip 文件并解压该 zip 文件并将文件保存到 SD 卡中 但问题是如果我下载 4 5 MB 的 zip 文件并解压它 这工作正常 但如果我下载 30 35 MB zip 文件这会
  • 在 C# 中重命名文件

    如何使用 C 重命名文件 看一眼系统 IO 文件 移动 http msdn microsoft com en us library system io file move aspx 将文件 移动 到新名称 System IO File Mo
  • Helm 中的 PostgreSQL:initdbScripts 参数

    PostgreSQL 的默认 Helm Chart 即stable postgresql 定义了一个initdbScripts允许运行初始化脚本的参数 但是 我似乎无法获得正确的格式来了解如何通过命令行发出它 有人可以提供如何填充此命令行参
  • Haskell 列表的嵌套笛卡尔积

    我想创建一种方法 可以给它一个长度列表 它会返回达到这些长度的笛卡尔坐标的所有组合 用一个例子更容易解释 cart 2 5 Prelude gt 0 0 0 1 0 2 0 3 0 4 1 0 1 1 1 2 1 3 1 4 cart 2