OCaml:设置模块

2024-06-26

我想使用 OCaml 生成数据集并在它们之间进行比较。我看过模块类型的文档,例如Set.OrderType, Set.Make等等,但我不知道如何初始化一组或以其他方式使用它们。


集合是使用函数接口定义的。对于任何给定的类型,您必须创建一个Set该类型的模块使用Set.Make函子。标准库的一个不幸的监督是它们没有定义Set内置类型的实例。在大多数简单的情况下,使用就足够了Pervasives.compare。这是一个适用于的定义int:

module IntSet = Set.Make( 
  struct
    let compare = Pervasives.compare
    type t = int
  end )

该模块IntSet将实施Set.S界面。现在您可以使用以下命令对集合进行操作IntSet module:

let s = IntSet.empty ;;
let t = IntSet.add 1 s ;;
let u = IntSet.add 2 s ;;
let tu = IntSet.union t u ;;

请注意,您不必显式定义输入结构Set.Make as an OrderedType;类型推断将为您完成这项工作。或者,您可以使用以下定义:

module IntOrder : Set.OrderedType = struct
  type t = int
  let compare = Pervasives.compare
end

module IntSet = Set.Make( IntOrder )

这样做的优点是您可以重复使用相同的模块来实例化Map:

module IntMap = Map.Make( IntOrder )

使用函子时会失去一些通用性,因为元素的类型是固定的。例如,您将无法定义一个采用Set某种任意类型并对其执行某些操作。 (幸运的是,Set模块本身声明了许多有用的操作Sets.)

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

OCaml:设置模块 的相关文章

  • 集合成员的 TTL

    Redis 是否可以不为特定键而是为集合的成员设置 TTL 生存时间 我正在使用 Redis 文档提出的标签结构 数据是简单的键值对 标签是包含与每个标签对应的键的集合 例如 gt SETEX id id 1 100 Lorem ipsum
  • Python:选择多个已安装模块版本之一

    在我的系统上 我多次安装了多个模块 举个例子 numpy 1 6 1安装在标准路径中 usr lib python2 7 dist packages 我有一个更新版本numpy 1 8 0安装于 local python lib pytho
  • 如何使用 python 模块的多个 git 分支?

    我想使用 git 来同时处理我正在编写的模块中的多个功能 我目前正在使用 SVN 只有一个工作区 因此我的 PYTHONPATH 上只有该工作区 我意识到这不太理想 所以我想知道是否有人可以建议一种更 正确 的方法来做到这一点 让我用一个假
  • 在 Android 库项目中禁用 Crashlytics 进行调试

    我有一个包含多个模块的项目 模块的公共代码位于库模块中 问题是我们最近将 Crashlytics 添加到了我们的项目中 在库模块中 即使我们处于调试模式 我们也会不断收到错误报告 我在网上搜索了一下 发现库总是被视为Release模式 现在
  • Android 5.0 - 在模块中声明自定义权限

    我在 Android Studio 中有一个模块 我在多个应用程序 均使用不同的密钥签名 中使用该模块来处理 GCM 通知 在 GCM 客户端文档中 他们说要定义包命名空间自定义权限
  • 如何卸载(重新加载)Python 模块?

    我有一个长期运行的 Python 服务器 并且希望能够在不重新启动服务器的情况下升级服务 这样做的最好方法是什么 if foo py has changed unimport foo lt How do I do this import f
  • 从主模块访问动态功能模块的可绘制文件夹中的图形

    我正在尝试动态模块拆分 API 交付 以便将我的游戏应用程序分解为即时版本和可安装版本 我一直在关注这里的 Codelabs 教程https codelabs developers google com codelabs on demand
  • 为所有用户持久安装 PowerShell 模块

    我正在通过以下方式安装 PowerShell 模块八达通部署 http octopusdeploy com 到许多不同的服务器上 出于测试目的 我按照 Microsoft 文档的指导进行了安装PowerShell模块 https learn
  • Pandas datetools模块错误

    我正在尝试从 pandas datetools 调用模块 但收到错误消息 指出 mofule 对象没有我所调用的名称的属性 想知道是否有人可以阐明这个问题 下面是我尝试使用的代码 import blpapi import pandas as
  • 在 config/main.php 中找不到 Yii2 模块(不在 /vendor 文件夹下)类

    我在 api 文件夹下创建了一个模块 它本身与 yii2 高级应用程序中的后端和前端处于同一级别 文件夹结构 api 常见的 控制器 楷模 配置 模块 v1 控制器 楷模 运行 测试 网络 在 api config main php 中 r
  • 从 R 中的向量中选择所有可能的元组

    我正在尝试用 R 编写一个程序 当给定一个向量时 将返回所有可能的tuples http en wikipedia org wiki Tuples该向量中的元素 例如 元组 c a b c c a b c 出租车 c a c c b c c
  • 模块未使用库演化支持进行编译;使用它意味着无法保证二进制兼容性

    最近我遇到了 SDK 的编译时警告 这是否意味着它不是使用目标设置 构建用于分发的库 构建的 你需要设置Build Libraries for Distribution在项目中Build Settings to No然后它就会消失
  • 安装 python 3 的包

    我倾向于在 Jupyter 笔记本中运行我的代码 这些代码在 python 3 中运行 我的计算机上也有 python 2 我安装了pip3所以我可以专门为 python 3 安装软件包 但这似乎不适合我 mba pip3 install
  • 两个未排序小数组的交集算法

    我正在寻找一种在非常特定的条件下对两个小型未排序数组进行交集的算法 数组项的类型只是整数或类整数类型 在相当长的时间内 大约 30 40 一个或两个数组可能为空 数组通常非常小 通常为 1 3 个项目 我预计不会超过 10 个 交集函数会被
  • java.util.Collection 的经典集合操作

    java util Collection 类上是否有用于经典集合操作的内置功能 我的具体实现是针对 ArrayList 的 但这听起来应该适用于 Collection 的所有子类 我正在寻找类似的东西 ArrayList
  • 哪个 Python 模块适合列表中的数据操作?

    我有一个 x y 和 z 坐标序列 需要对其进行操作 它们位于三个元组的一个列表中 例如 x1 y1 z1 x2 y2 z2 我需要加法 乘法和对数来处理我的数据 我想研究一个像 awk 语言一样强大的模块 我不确定你到底在追求什么 您可以
  • 将数组初始化为空白自定义类型 OCAML

    我设置了自定义数据类型 type vector a float b float 我想初始化一个向量类型的数组 但不包含任何内容 只是一个长度为 x 的空数组 下列 let vecarr Array create max seq length
  • Visual Studio - 查找哪些模块导致 C1905(处理器不兼容)

    我正在尝试使用 Visual Studio 2005 进行 x64 版本的项目 当前失败 并出现链接器错误 C1905 前端和后端不兼容 必须针对相同的处理器 根据我收集的信息 这本质上是说我的 x64 构建正在尝试与 x86 模块链接 不
  • intellij idea 中的项目组

    目前 至少从 IntelliJ Idea 14 开始 ide 会记住最后一组打开的项目 我们能否轻松地控制它并拥有可切换的项目集 组 这是打开项目的另一种方式 与模块不同 我希望某个插件已经具备该功能 但是是哪一个呢 截至2017年8月 I
  • 我使用自制程序安装nginx,如何添加第三个模块?

    我在我的Mac上brew install nginx 但我不知道配置文件在哪里 并且我使用 brew install nginx add module xxxx 来添加模块不起作用 请帮助 The nginx 已满brew Formula

随机推荐

  • 文本框的自定义日期格式

    有关的 将3个文本框绑定在一起 相同的日期时间不同的格式 https stackoverflow com questions 35581427 binding 3 textboxes together same datetime diffe
  • EntityType“MyProfile”没有定义键。定义此 EntityType 的键

    我不确定为什么会收到此错误消息 我在 sql 数据库中为其定义了一个主键 这是我的代码 HttpPost public ActionResult Register RegisterModel model if ModelState IsVa
  • 修改字符数组,修改部分向后显示

    我刚刚开始学习汇编 我正在尝试修改字符数组 这是我的汇编代码 data data byte Five 0 code Asm proc lea rax data mov dword ptr rax Four ret Asm endp end
  • 刷新后,字体真棒图标在 IE 中变得不可见

    我遇到了 IE 浏览器的问题 它正在加载首次加载的图标 但如果我刷新页面 图标将不可见 您能告诉我如何从服务器端解决这个问题吗 这与所有 ie 浏览器 ie11 ie10 ie9 刷新后 字体很棒消失 https stackoverflow
  • 使用与打字稿反应来玩笑测试复制到剪贴板方法

    我试图确保当用户单击按钮时将正确的值复制到用户剪贴板 这是我的复制方法 我在输入上使用 ref 来访问正确的值 protected copyToClipboard console log clicked const text this co
  • 如何设置 MediaCodec 创建的编码器缓冲区大小

    我正在尝试使用 Nexus 来测试 Mediacodec API 的编码 我可以看到编码器提供的inputBuffers是119040 通过记录inputBuffers capacity 但帧的大小 即输入 是 460800 我收到错误消息
  • 从 Windows 文件系统中的任何位置运行 python 脚本

    我已经实现了一些实用程序来满足我的需要 以使用 Python 简化开发 需要多个 py文件和一些额外的 template文件 重命名 txt file 我希望能够从文件系统中的任何位置使用此实用程序 例如 如果我当前位于某个文件夹中 我想运
  • 为什么我的 PHP 字符串比较失败?

    我有以下代码片段 if summary CFD funding Interest Paid summary Commissions summary Closing trades print summary date reference de
  • 正则表达式表示 hh:mm am/pm 格式的时间

    我需要对学校项目的输入进行严格验证 时间格式为 HH MM am pm 到目前为止 我已经得到了这个正则表达式 01 0 9 0 5 0 9 AaPp Mm 这是一个工作演示 http regexr com 3c9b5 http regex
  • 渲染 StackedInline 字段时如何重写 str 方法?

    我有多对多关系 class GroupeCategoriesCategorie models Model groupe categories models ForeignKey GroupeCategories related name g
  • MS Access:将组合框中选定的条目插入表中

    这是我使用 MS Access 所做的一个示例 我有一个包含人名的表格和两个用于添加电话号码的文本字段 我创建了一个包含名称的列表框 我设法将列表框中选定的姓名和文本字段 Tel1 和 Tel2 中的电话号码插入表 ContactTable
  • 将 SVG 中的文本修剪为给定的像素宽度

    我正在 SVG 中绘制文本标签 我有一个可用的固定宽度 比如 200px 当文字太长时 如何修剪 理想的解决方案还会在文本被剪切的地方添加省略号 但没有它我也可以生活 使用 d3 库 溢出文本的包装函数 function wrap var
  • JMenuItem:如何设置具有3个键的加速器?

    请看下面的代码 import java awt import java awt event import javax swing public class MenuActions extends JFrame private JMenuBa
  • 类型“Queryable”上的通用方法“OrderBy”与提供的类型参数不兼容

    我正在编写一些代码来修改表达式 以便其中包含的子查询得到排序 我发现了一段类似的代码这里就这样 https stackoverflow com a 1379693 509464 但这对我不起作用 我也尝试看看this https stack
  • 如何在 Amserial 图表中添加图例

    我在 AngularJS 应用程序中使用 Amcharts 创建一个简单的条形图 以下是我在控制器中的代码 let empChart let empBarGraph let empLine const writeemp data gt co
  • WP7模拟器的独立存储位于PC上的哪里?

    当我们使用模拟器并将文件存储在隔离存储中时 文件实际存储在计算机上的哪里 我的意思是路径 如果 模拟器 指的是模拟器 那么该数据不会存储在主机 PC 上的 真实 文件夹中 模拟器 为了论证 是一个虚拟机 因此它的整个文件夹结构是单独存储的
  • 在 Qt 5.12 的 OpenCV dll 上找不到入口点

    TLDR 将 OpenCV 与 QT MingW 链接会使应用程序在调试时崩溃 但不会在发布时崩溃 我正在尝试在基于 Qt 的大型多操作系统项目中使用 OpenCV 我已经轻松地为 Mac 和 Linux 构建了 OpenCV 但在 Win
  • PowerMockito 与 Jacoco 代码覆盖率

    Powermockito 和 jacoco 的代码覆盖率 在我的项目中 我们使用 powermockito 来覆盖 jacoco api 的代码 看来我们使用 preparefortest xyzimpl class abcd class
  • 为什么我的 HTML 文件无法在浏览器中显示?

    我正在学习如何使用文本编辑器 并且刚刚用它创建了我的第一个文件 它预览了正确的输出 但是当我在浏览器中运行它时 它给了我一个空白页面 正如您所看到的 doctype 和 html 标签以及 head 和 body 都已就位 我使用 Visu
  • OCaml:设置模块

    我想使用 OCaml 生成数据集并在它们之间进行比较 我看过模块类型的文档 例如Set OrderType Set Make等等 但我不知道如何初始化一组或以其他方式使用它们 集合是使用函数接口定义的 对于任何给定的类型 您必须创建一个Se