在 Haskell 中查找给定集合 A 和通用集合 U 的补集 [关闭]

2024-03-03

我尝试编写一个函数(补集),给定一个集合 A 和一个通用集 U,返回 A 相对于 U 的补集,包装在 Just 类型构造函数中。我必须仔细检查集合 A 是否不是 U 的子集,在这种情况下,我应该返回 Nothing。

基本上,我发现很少有资源解释如何检查一个集合(在我们的例子中为 A)是否是 U 的子集。http://www.multiwingspan.co.uk/haskell.php?page=subsets http://www.multiwingspan.co.uk/haskell.php?page=subsets基本上,使用“subset”函数(返回布尔值)就足以查看 A 是否是 B 的子集。

我发现了一个同样不同的网站,它解释了如何在不实现递归函数的情况下创建补集,使用:

import Data.Set(Set)
import qualified Data.Set  as Set

唯一的问题是我无法导入任何外部模块来解决这个问题。

该函数的签名是:

complement :: (Eq a) => [a] -> [a] -> Maybe [a]

我期望以下输出:

complement [1,2,3] [1..5] = Just [4,5]
complement [1,2,3] [2..5] = Nothing

谁能帮我处理一下吗?


我不想为你解决你的问题——我相信解决方案应该是你自己的工作。但是,我将提供可以为您提供帮助且无需导入的函数列表:

  • filter f list:返回所有元素list where f element回报True。例如,filter (\x -> (x /= 0)) [0,1,0,2,3] gives [1,2,3]。这对于not函数,它反转Bool;例如,filter (\x -> not (x > 2)) [1,2,3,4,5] gives [1,2].
  • all f list:返回True if f gives True对于所有元素list。例如,all (\x -> (x /= 0)) [1,2,3] gives True;然而,all (\x -> (x /= 0)) [1,0,2,3] gives False.
  • x `elem` list(这实际上只是语法糖elem x list) 返回 true,如果x是一个元素list。例如,1 `elem` [1,2,3] gives True, but 0 `elem` [1,2,3] gives False.

再说一次,我不会直接给你这个问题的解决方案。但我可以向你保证,如果你以正确的方式将上述功能组合在一起 - 连同Just and Nothing构造函数 - 你可以让你的complement功能。

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

在 Haskell 中查找给定集合 A 和通用集合 U 的补集 [关闭] 的相关文章

  • 有没有办法从 IO monad 中解开类型?

    我有这个非常简单的功能 import qualified Data ByteString Lazy as B getJson IO B ByteString getJson B readFile jsonFile readJFile IO
  • 执行 set_difference 时出错:变量结果不是结构

    我在函数外部全局声明了一个设置变量 std set
  • 如何根据列表中的先前值过滤Haskell中的列表元素?

    我正在努力在 Haskell 中创建一个函数 该函数根据列表中前一个元素的条件过滤列表的数字 Example 前一个数字是 2 的倍数 myFunction 1 2 5 6 3 expected output 5 3 我知道如何申请filt
  • 组合 concat 和 map 得到 concatMap:为什么是 f?

    这是我对 Haskell 的第一次探索 如果它很明显 请原谅我 我整个下午都在玩 Haskell 仔细浏览教程HaskellWiki 上的 99 个问题 http www haskell org haskellwiki 99 questio
  • Foldl 是否比其严格的表亲 Foldl' 更好?

    Haskell 有两个列表左折叠函数 foldl 以及 严格 版本 foldl 不严格的问题foldl是它建造了一座重击塔 foldl 0 1 5 gt 0 1 2 3 4 5 gt 15 这会浪费内存 并且如果列表中的项太多 可能会导致堆
  • 获得列表并集的最快方法 - Python

    有一个 C 比较可以从列表列表中获取列表的并集 找到集合并集的最快方法 https stackoverflow com questions 11362002 the fastest way to find union of sets 还有其
  • 移动列表中特定元素的简单函数

    我是 Haskell 的新手 我正在尝试弄清楚如何创建一个函数 shift Eq a gt a gt a gt Int gt a shift x h t z 输入 一个通用列表和一个相同类型的元素 x 前提条件 元素x存在于列表中 Outp
  • Haskell:Where 与 Let

    我是 Haskell 的新手 我很困惑Where vs Let 它们似乎都提供了相似的目的 我读过一些比较Where vs Let但我很难辨别何时使用它们 有人可以提供一些背景信息或者一些示例来说明何时使用其中一种而不是另一种吗 哪里与让
  • 是否可以列出派生 Generic 的记录数据类型中字段的名称和类型?

    我知道对于派生 Data Data 的数据类型 constrFields http hackage haskell org package base 4 7 0 2 docs Data Data html v constrFields给出字
  • 使用通用元组函数一次进行多次折叠

    如何编写一个接受类型函数元组的函数ai gt b gt ai并返回一个函数 该函数接受类型元素的元组ai 类型的一个元素b 并将每个元素组合成一个新的元组ai 那是签名应该是这样的 f a1 gt b gt a1 a2 gt b gt a2
  • 显示未定义的实例

    可以采取任何措施来为未定义的值定义 Show 实例吗 也许存在一些 GHC 扩展 我想要这样的东西 gt print 1 undefined 1 undefined 根据Haskell 2010 报告 第 9 章 http www hask
  • 通过 Emacs 评估 ghci 或 Hugs 中的缓冲区

    在 Emacs 中使用 sml mode 我已经能够使用以下命令将缓冲区内容直接发送到较差的 SML 进程C c C b 现在我只想用 Haskell 做同样的事情 Haskell 模式似乎不支持这一点 所以我想知道 使用 Emacs 和
  • 类 GADT 类型变量的未来角色?

    A 昨天的问题 https stackoverflow com q 41135212 3072788有一个定义HList 来自HList https hackage haskell org package HList 0 4 1 0 doc
  • Haskell Cabal 包 - 找不到 Paths_ 模块

    我正在开发一个 Haskell 项目 Happstack 服务器 Blaze HTML 前端作为主要库 我想添加一个静态数据目录 看起来你可以使用 Cabal 使用自动生成的Path
  • 为什么 Parsec 的 sepBy 停止并且不解析所有元素?

    我正在尝试解析一些逗号分隔的字符串 该字符串可能包含也可能不包含具有图像尺寸的字符串 例如 hello world 300x300 good bye world 我写了下面的小程序 import Text Parsec import qua
  • Haskell 下划线与显式变量

    我已经学习 Haskell 几个星期了 我有一个关于下划线的使用的问题 作为函数参数 我认为用一个具体的例子来问我的问题会更好 假设我想定义一个函数 根据提供的索引提取列表的元素 是的 我意识到 已经是预先定义的 我可以定义该函数的两种方法
  • 搜索重写规则

    有什么办法可以浏览或搜索重写规则吗 当我使用像这样的标志时 ddump rule firings or ddump rule rewrites我只是得到了触发的规则的名称以及它引起的重写 但没有得到实际的规则本身 理想情况下 我想通过 GH
  • 在依赖类型的函数式编程语言中,扁平化列表是否更容易?

    在 haskell 中寻找一个可以展平任意深度嵌套列表的函数时 即应用的函数concat递归并在最后一次迭代时停止 使用非嵌套列表 我注意到这需要有一个更灵活的类型系统 因为随着列表深度的变化 输入类型也会变化 确实 有几个 stackov
  • Haskell,堆栈:找到可执行文件

    我正在寻找类似的东西 stack whereis hasktags where whereis行为或多或少类似于 UNIXwhereis命令 hasktags是这样运行的 stack exec hasktags stack exec whe
  • 规范化且不可变的数据模型

    Haskell如何解决 规范化不可变数据结构 问题 例如 让我们考虑一个表示前女友 男友的数据结构 data Man Man name String exes Woman data Woman Woman name String exes

随机推荐

  • 在 JQuery AJAX 发布之前暂停

    因为我正在处理的页面是一个内联网页面 所以我的 AJAX 调用和响应非常快 出于可用性目的 我想要短暂的 1 2 秒暂停来显示加载动画 下面是我尝试过的 但动画几乎不可见 document ready function wait hide
  • CSS?这个箭头是怎么做出来的?

    这让我发疯 我一直在使用 Firefox 检查器来尝试找出这个箭头是如何在进展现场 http headwaythemes com 我通过检查器删除块来削减代码 并将其简化为 无论我在哪里检查 我都可以not找到任何这样的形状 没有背景图像
  • windows mingw下使用zlib

    我似乎无法让 zlib 在 Windows 下的 mingw 上执行任何操作 我下载了zlib http sourceforge net projects mingw files beta MinGW zlib zlib 1 2 3 1 m
  • 设计在不同的屏幕上破碎[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我设计了一个网页 其中很少有HTML元素没有响应 这些元素是动态生成的jQuery我相信 应该有一种方法可以让他们看起来反应灵敏 Me
  • 如何针对 TextReader 使用正则表达式?

    在 可能 非常大的文本中查找模式的最佳方法是什么 我可以使用正则表达式 但它接受字符串作为参数 有没有办法将它与 TextReader 或某种流一起使用 不 正则表达式可能需要进行回溯 由于流只能向前读取 这意味着无论如何它都必须将整个流保
  • 无法在 Docker 容器内从 Google API 交换 AccessToken

    我有一个用 Go 编写的网络应用程序 使用 oauth2 包golang org x oauth2 通过 Google 登录用户 按照本教程操作https developers google com identity sign in web
  • Facebook API - uids 和电子邮件 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试开发一个应用程序 用户 X 已登录 Facebook 应用程序有一组电子邮件地址 可能是用户 X 的朋友 应用程序获取用户
  • 为什么要在 Objective C 构造函数中使用 [super init]?

    假设我有一个名为 Item 的类 它是 NewsItem 和 TwitterItem 的超类 如果我想创建一些 NewsItem 我必须使用 在构造函数内 self super init 如果是 为什么 在 Java C 中我会这样做 Ne
  • Flexbox 实现水平滚动

    我正在使用 Flexbox 布局制作一个购物中心网站 但 Flexbox 在某些区域会导致问题 Flexbox 似乎在某些区域进行水平滚动 但我不希望这样 您的问题是横幅中的图像太宽 无法适应大多数视口 因此它们迫使页面变宽 没有简单的方法
  • 在 R 中重复多个 NULL

    在我的模拟中 我需要一个如下所示的向量 vec NULL NULL NULL NULL 2 2 2 2 4 4 4 4 但是 在 R 中 当我使用rep NULL 4 它什么也不返回 例如 vec all c rep NULL 4 rep
  • SwiftUI 垂直未对齐的文本

    我有一些垂直未对齐的文本 我不知道为什么 代码 struct IBANInputView View State var securityDigits State var bankCode State var accountNumber va
  • CSS 动画在 Chrome 中不起作用

    对项目的一些见解 一个完整的交互式网站 动画将在其中播放 然后它们会停止 一旦它们停止并且动画上发生鼠标悬停事件 它将播放直到动画完成 70 当单击另一个对象时 在本例中 案例文本 它将完成它的循环 我的项目合作伙伴在 Google Web
  • 语法与运算符结合性之间的关系

    一些编译器书籍 文章 论文谈论语法的设计及其运算符的结合性的关系 我是自上而下的忠实粉丝 尤其是递归下降 解析器 到目前为止我编写的大多数 如果不是全部 编译器都使用以下表达式语法 Expr Term Term Term Factor Fa
  • 适用于 emacs 的交互式拼写检查程序

    我最近切换到 emacs24 并升级到 Ubuntu 12 04 我似乎无法让 hunspell 再次正常工作 我发现 hunspell 总体上比 aspell 更好 Hunspell 只想使用澳大利亚词典而不是英语美国词典 否则会冻结我的
  • 如何将 selenium webelelements 转换为 python 中的字符串列表

    我从 Scopus 网站收集了强制性数据 我的输出已保存在名为 文档 的列表中 当我对这个列表的每个元素使用 type 方法时 python 返回这个类
  • 接受 Flask url 中的整数列表而不是一个整数

    我的 API 有一个通过 url 中传递的 int id 来处理用户的路由 我想传递一个 id 列表 这样我就可以向 API 发出一个批量请求 而不是多个单个请求 我如何接受 id 列表 app route user
  • 运行应用程序时,在 VSCode 中启动 ASP.NET Core 应用程序中的特定 URL

    如果重要的话 可以在 Mac 上运行 在 Visual Studio 中 您可以在运行或调试 ASP NET Core 项目时使用此方法启动特定 URL 使用 launchUrl 属性 这是一个示例 launchSettings json
  • Laravel 按日期时间格式中的小时进行分组

    如何按一天中的时间对网站上的 注册 进行分组 我已经尝试过了 但它不起作用 regs DB table registrations gt select createddatetime DB raw COUNT id gt groupBy D
  • 如何访问 docker-compose 在 haproxy 配置中创建的副本

    我有一个简单的 haproxy cfg 如下所示 frontend http bind 8080 mode http use backend all backend all mode http server s1 ws 8080 现在我有一
  • 在 Haskell 中查找给定集合 A 和通用集合 U 的补集 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我尝试编写一个函数 补集 给定一个集合 A 和一个通用集 U 返回 A 相对于 U 的补集 包装在 Just 类型构造函数中 我必须仔