创建直方图 OCaml

2023-12-27

我的任务是创建一个直方图,输出某个元素在列表中出现的次数。

Input:[2;2;2;3;4;4;1]
Output[(2, 3); (2, 2); (2, 1); (3, 1); (4, 2); (4, 1); (1, 1)]  
Expected output : [(2, 3); (3, 1); (4, 2); (1, 1)]

My code:

let rec count a ls = match ls with
  |[]              -> 0
  |x::xs  when x=a -> 1 + count a xs
  |_::xs           -> count a xs

let rec count a = function
  |[]              -> 0
  |x::xs  when x=a -> 1 + count a xs
  |_::xs           -> count a xs

let rec histo l = match l with
|[] -> []
|x :: xs ->  [(x, count x l)] @ histo xs ;;

我做错了什么?


问题是 xs 可能包含等于 x 的元素。这就是您在输出中看到的内容:(2,3) 表示列表中有 3 乘以 2; xs 则等于 [2;2;3;4;4;1]... 等等。

另外(不影响结论):您有 2 个计数定义,但它们是相同的。

要实现直方图,请使用 Hashtbl :

let h = Hashtbl.create 1000;;    
List.iter (fun x -> let c = try Hashtbl.find h x with Not_found -> 0 in Hashtbl.replace h x (c+1)) your_list;;
Hashtbl.fold (fun x y acc ->  (x,y)::acc) h [];;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建直方图 OCaml 的相关文章

  • 如何将函数应用于变体?

    让这个类型 type intC int type boolC bool type stringC string type component A of intC B of boolC C of stringC 如果我想对组件 A 的类型 a
  • 将 OCaml 字符串转换为 format6

    以下代码无法编译 let x hello in Printf printf x 错误是 Error This expression has type string but an expression was expected of type
  • 程序程序员的功能代码片段列表? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 OCaml 中读取 URL 的 HTML 内容

    我想编写一个 OCaml 函数 它接受一个 URL 并返回一个由该位置的 HTML 文件内容组成的字符串 有任何想法吗 多谢 最好的 苏里卡托 我已经使用 ocurl 和 nethtml 完成了这两件事 ocurl http sourcef
  • 在使用 Base 的 OCaml 中,如何构造一个包含“int * int”类型元素的集合?

    在 F 中 我只需执行以下操作 gt let x Set empty val x Set lt a gt when a comparison gt Set add 2 3 x val it Set
  • OCaml 中的多态性 - 特别、参数、包含/子类型

    我在理解不同类型的多态性时遇到问题 特别是关于 OCaml 的多态性 我知道多态性允许 OCaml 中表示为 a 的多种类型 但我不明白不同类型的多态性是什么 如果有人能用相对低级的语言给我解释那就太棒了 临时 参数 包含 子类型 这是一个
  • 为什么这个 OCaml 程序比我的 C 程序更快?

    我写了一个基本的嬉皮舞 http www facebook com careers puzzles php puzzle id 7使用 C Python 和 OCaml 编写程序 诚然 这可能不是这三种语言的一个很好的基准 但我得到的结果是
  • 如何为 OCaml 配置 _oasis 以设置“配置文件”标志

    我在 OCaml 中有一个现有项目和一个 oasis文件 我不知道在哪里启用分析标志ocamlbuild 我查了Oasis手册和代码 发现有一个变量profile在 setup data 中可用 我认为这是 Oasis 自动生成的 我应该在
  • OCaml:从列表中删除重复项,同时保持右侧的顺序

    我刚刚读过这个线程 https groups google com d msg racket users BuUzcJtd3Ig zqYIjVyJdjoJ并觉得很有趣 我实施remove from the left几分钟后即可运行 remo
  • 数据中的是什么?

    我使用OCaml版本4 02 3 我定义了一个类型self type self Self of self type self Self of self 及其实例s let rec s Self s val s self Self
  • llvm OCaml 绑定

    我正在研究 llvm OCaml 绑定 我通过 opam 安装了 llvm 包 opam install llvm 当我在 utop 中使用 llvm 时 出现以下错误 require llvm Error The external fun
  • GODI-电池:安装问题

    我正在尝试使用 GODI 控制台安装 godi batteries 我似乎已经对所有依赖项进行了排序 例如甘菊 我在 Godi 的界面中收到以下错误 gt ocamlfind ocamlopt shared linkall package
  • 如何从ocaml列表中获取子列表

    我正在查看列表文档 图书馆好像没有提供sublist功能 我正在尝试从中获取元素列表i to j 现在我必须把它写成 let rec sublist list i j if i gt j then else List nth list i
  • 在哪里可以找到 OCaml Option 模块?

    我的意思是这个模块 Option http ocaml lib sourceforge net doc Option html 我找不到它 open Option给我Error Unbound module Option并且没有 optio
  • 什么才是真正性能更高的? Haskell 或 OCaml [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • OCaml:用消息断言

    又是另一个问题 P 我不太确定是否应该将其发布在这里或 OCaml 邮件列表上 但我首先尝试这样做 我喜欢断言语句 然而 我发现如果没有附加消息 错误消息几乎毫无用处 第 XXX 行的断言冲突 很好 但实际上出了什么问题 我认为断言的一个很
  • 使用只有一个元组值的变体类型构造函数

    type foo Foo of int int let t 1 2 Foo t Error The constructor Foo expects 2 argument s but is applied here to 1 argument
  • 在 OCaml 自定义顶层设置提示

    在 OCaml 自定义顶层中 有没有一种方法可以通过编程方式设置提示 到别的东西 我希望能够更改它以响应用户的最后一个自定义功能 有点像bash你如何设置PS1 我什至找不到 directive 来更改它 谢谢 在 toplevel top
  • OCaml 中的用户定义打印机

    printf fprintf等 全部接受 a转换 手册上说对于 a 用户定义的打印机 采用两个参数 并将第一个参数应用于 outchan 当前输出通道 和第二个参数 因此 第一个参数的类型必须为 out channel gt b gt un
  • OCaml 中的不可变变量

    我正在学习 OCaml 我对变量的不变性有点困惑 根据我正在读的书 变量是不可变的 到目前为止一切顺利 但到底为什么我可以这样做 let foo 42 let foo 4242 我缺少什么 我认为最好的解释方法是举个例子 考虑以下代码 在

随机推荐

  • 按预定义顺序返回查询结果

    是否可以做一个SELECT具有预定顺序的语句 即 选择 ID 7 2 5 9 和 8并按顺序返回它们 仅基于 ID 字段 这两个语句都以相同的顺序返回它们 SELECT id FROM table WHERE id in 7 2 5 9 8
  • 防止 IFrame 导航

    我用一个iframe通过 JS 将 HTML 字符串写入其内容文档来显示 HTML 电子邮件内容 我不希望用户在其中导航iframe如果他点击显示的电子邮件中的链接 现在我有这些选择 在新的浏览器窗口或选项卡中打开链接 首选 阻止所有导航
  • 在 Angular 上运行 karma 测试时出现“Uncaught [object Object]”

    在为我的应用程序运行单元测试时 我正在与这个奇怪的错误作斗争 zone js 260 Uncaught object Object thrown Zone runTask zone js 260 ZoneTask invoke zone j
  • ASP/C# 后面的代码无法从标记获得控制

    Issue 我有这样的标记 只有重要的行 ul class teaserLinksUL ul 后台代码 namespace MainSolution CONTROLTEMPLATES Kunde public partial class R
  • 从 OpenGL 中的纹理采样为黑色

    我正在按照以下教程尝试图形处理http en wikibooks org wiki OpenGL Programming Modern OpenGL Tutorial 06 http en wikibooks org wiki OpenGL
  • 为什么 Chrome 浏览器无法识别我的 http2 服务器?

    我按照以下设置我的 Nginx 配置数字海洋纸 https www digitalocean com community tutorials how to set up nginx with http 2 support on ubuntu
  • 如何在java中使用AWS Textract检索pdf中存在的表

    我发现下面的文章是用 python 做的 https docs aws amazon com texttract latest dg examples export table csv html https docs aws amazon
  • 如何调试 WSO2 ESB 代码

    您通常如何调试 ESB 代码 我正在使用日志语句 但它们在系统日志中丢失了 有没有更好的机制可以使用 Thanks 您可以使用 ESB 代码从 IDE 进行远程调试 首先使用调试选项启动 ESB 服务器脚本 如下所示 wso2server
  • PHP:不区分大小写的参数

    我如何接受已通过GET or POST值不区分大小写 Like sample php OrderBy asc仍然会是一样的sample php orderby asc or sample php ORDERBY asc 有没有一种方法可以有
  • 在 Java 中构建分隔项字符串的最佳方法是什么?

    在使用 Java 应用程序时 我最近需要组装一个以逗号分隔的值列表以传递给另一个 Web 服务 而无需提前知道其中有多少元素 我能想到的最好的办法是这样的 public String appendWithDelimiter String o
  • Model.find Mongoose 6.012 始终返回所有文档,即使有过滤器

    我的架构示例 const XXXSchema new mongoose Schema name String 我使用猫鼬有一段时间了 最 近我开始遇到这些问题 以下查询按预期工作 await MyModel find id ObjectId
  • 是否有内置支持在 Azure 容器实例上启用 SSL?

    是否有内置支持在 Azure 容器实例上启用 SSL 如果没有 我们可以连接到像 Lets Encrypt 这样的 SSL 提供商吗 今天没有任何内置的东西 您需要将证书加载到容器中并在那里终止 SSL 很快 我们将启用对 ACI 容器加入
  • 使用 keyup 捕获 TAB 按键

    我需要实现 2 个目标 但我一次只实现一个目标 而不是同时实现两个目标 首先 我有一个输入字段 当按下按键时应该触发一个事件 并且我需要捕获字段值 我使用字母 数字和 TAB 键 因此 如果我使用 keyup 它会在第一个字符处触发 如果我
  • 打开 jquery.min.js 后 Eclipse 变得非常慢

    正如标题所说 每当我打开一个长压缩版本的任何 javascript 库 如 jquery 或 Foundation min js 时 我的 Eclipse 安装都会变得非常非常缓慢 有时重新启动后 事情会再次正常 直到我打开这些文件 有什么
  • tsc 编译使用文件扩展名导入的打字稿

    我以独立于生态系统的方式编写打字稿代码 我决定在导入中包含文件扩展名 以匹配 Web 和 Deno import xyz from foo ts 我怎样才能获得打字稿编译器 tsc 编译这些文件不会出现以下错误 error TS2691 A
  • 为什么 npm install 仅在 ElasticBeanstalk 中失败?

    我有一个 Nest js Node js 应用程序 我想将其部署在 ElasticBeanstalk Node 16 版本 AL2 5 5 0 上 我的部署一直失败 我发现错误在eb engine log 2022 03 23 15 11
  • “const int& jj”和“int& const jj”有什么区别?

    我对两者感到困惑 我知道 C 引用本质上是恒定的 一旦设置它们就不能更改为引用其他内容 const int 表示对 const 的引用int 相似地 int 表示对非常量的引用int int const字面意思是 const 引用 对非 c
  • Android:使用媒体播放器播放本地视频

    我正在尝试播放我在项目中保存的视频 我有下载this http camendesign co uk code video for everybody test html 一个 mp4 测试视频 然后在我的项目中创建了一个名为 vid 的文件
  • Cordova - 命令错误代码 1 |命令失败的时间为

    我是科尔多瓦的新手 所以如果我的问题不相关 请原谅我 我的 Windows 7 x64 机器中有一个 cordova 项目 昨天我通过构建我的科尔多瓦应用程序cordova build android release 但我需要添加新插件co
  • 创建直方图 OCaml

    我的任务是创建一个直方图 输出某个元素在列表中出现的次数 Input 2 2 2 3 4 4 1 Output 2 3 2 2 2 1 3 1 4 2 4 1 1 1 Expected output 2 3 3 1 4 2 1 1 My c