OCaml实用工具

2023-11-15

好久没写博客了,天天写代码(有时候打游戏)就懒了。本人主要为了扩展sgx_edger8r,所以学习了一番OCaml。(多动手搜和写代码才算有点学会了OCaml)

这里主要说一下OCaml工具的使用,OCaml的语法学习请直接参考官方手册,《Real World OCaml》,YouTube视频教程《OCAML Tutorial》或者《Ocaml Programming》。

OCaml的开发生态个人感觉比较差,我现在一般用vscode + OCaml Platform插件 + Ocamlearlybird调试插件进行完整的开发,就好比vscode + “c/c++扩展” + “c/c++扩展附带的cppdbg”。调试起来大概是这么几步,首先下载Ocamlearlybird的vscode插件、opam包,然后把Ocaml切换到4.11.0版本(更新版本我没用成功过),opam下载ocaml-lsp-server等。然后写一个设置调试的json片段(前提你把ocaml项目编译了,使用ocamlbuild、dune等)
在这里插入图片描述
然后就可以下断点调试
在这里插入图片描述
(earlybird的交互功能支持的很少。。。比如Debug Console没有用)

再介绍一下ocamlformat,你在目录下新建空的“.ocamlformat”文件,你就能使用vscode “shift+alt+f”格式化同目录下的ocaml源文件

如果想学习使用Yojson(Ocaml json库),或许可以参考这里

最后,请尝试使用dune build system来构建和管理ocaml项目,没有dune,感觉没法开发ocaml项目?

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

OCaml实用工具 的相关文章

  • 如何运行 OCaml + Core 脚本?

    我正在尝试 Real World OCaml 这本书 它讨论了安装 OPAM 然后是 OCaml 和 Jane Street Core 我按照书中的说明正确加载了 utop 以便它自动加载 Core 没有 Core 我可以简单地运行通用 O
  • Ocaml 多态记录类型不太通用

    给定以下类型 type props state reactInstance props props state state updater event props state reactInstance gt event gt state
  • 用 OCaml 编写解释器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在大学学习一门课程 要求我从操作语义开始 用 OCaml 编写一种语言的解释器 不幸的是 除了课程
  • 如何设置Emacs默认编译目录?

    我正在 Emacs 下编写 OCaml 代码 我有一个makefile在工作文件夹中 以及几个包含以下内容的子文件夹 ml文件 如果我启动M x compile and make在缓冲区上工作正常makefile 但不适用于 a 的缓冲区
  • 模式匹配和 if-else 之间的性能差异

    为什么 OCaml 可以为模式匹配生成高效的机器代码 而不是为 if else 测试生成高效的机器代码 我在读 Real World OCaml 时发现this https realworldocaml org v1 en html lis
  • 如何检查两个值是否是使用同一个构造函数创建的?

    假设我有 type t A of int B of int let xx A 2 let yy A 3 我想测试 xx 和 yy 的构造函数是否相等 是否有捷径可寻 而不必 match xx with A gt match yy with
  • 类型注释被推断的表达式类型覆盖

    在 Scala 编程语言中 假设我将使用更广泛的类型注释表达式并提供一个狭窄的值 我的程序将被拒绝 scala gt def x A A 8
  • OCaml 中的多态性 - 特别、参数、包含/子类型

    我在理解不同类型的多态性时遇到问题 特别是关于 OCaml 的多态性 我知道多态性允许 OCaml 中表示为 a 的多种类型 但我不明白不同类型的多态性是什么 如果有人能用相对低级的语言给我解释那就太棒了 临时 参数 包含 子类型 这是一个
  • 跟踪编译器中 AST 节点的源位置 (ocaml)

    我正在使用 ocamllex yacc 在 ocaml 中编写编译器 一切进展顺利 但我遇到了设计问题 对于我创建的每个 AST 节点 最好能获得有关源代码中该节点的行 字符位置的信息 这对于稍后向用户提供错误消息很有用 现在 我可以向我的
  • 尝试使用转义字符时 OCaml 正则表达式有问题

    我正在尝试使用 OCaml 为 C 的变体编写一个词法分析器 对于词法分析器 我需要匹配字符串 和 分别作为幂和或符号 这两个都是正则表达式中的特殊字符 当我尝试使用反斜杠转义它们时 没有任何变化 代码运行时就好像 仍然是行首而 仍然是 或
  • 数据中的是什么?

    我使用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
  • 如何使用List.fold_left?

    我仍在尝试了解如何fold left完全有效 它是否像这样迭代列表List iter 或者我的代码还有其他问题吗 我认为 e 是列表中的元素 所以它是一个元组 并且fst e获取元组的第一个元素并且snd e获取元组中的第二个元素 let
  • 具有可变参数数量的 OCaml 函数

    我正在探索 OCaml 函数的 高级 用法 我想知道如何编写具有可变数量参数的函数 例如 像这样的函数 let sum x1 x2 x3 xn x1 x2 x3 xn 通过一些类型黑客 当然 let sum f f 0 let arg x
  • OCaml 中 let rec 的限制

    这几天我在学习OCaml 发现了这个 OCaml 对于可以放在 let 记录右侧的内容有限制 像这个 let memo rec f norec let rec f memoize fun x gt f norec f x in f Erro
  • 错误:无法安全地评估递归定义模块的定义

    我很想了解为什么会发生此错误以及解决该错误的最佳方法是什么 我有几个文件types ml and types mli它定义了一个变体类型value可以是许多不同的内置 OCaml 类型 float int list map set 等 由于
  • OCaml 中的线性类型

    Rust http www rust lang org 有一个线性类型系统 有什么 好的 方法可以在 OCaml 中模拟这个吗 例如 当使用 ocaml lua 时 我想确保仅当 Lua 处于特定状态 堆栈顶部的表等 时才调用某些函数 Ed
  • OCaml:为什么重命名类型会失败并显示“它们的种类不同”

    我正在为成对的类型见证和见证类型的值构建一个通用容器 我想将其用于几种不同的类型 这会给我带来错误 因为这些类型的名称都相同 所以我尝试重命名函子结果中的类型 如下所示 module type Witness sig type a key
  • 在 OCaml 自定义顶层设置提示

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

    我基本上是在尝试遵循这篇文章中的 stackoverflow 答案 OCaml 中 HttpRequest 的最佳模块是什么 https stackoverflow com questions 14134116 what is the be
  • 使用fold_left/right反转OCaml中的列表

    更新 解决方案 感谢 jacobm 的帮助 我想出了一个解决方案 Folding Recursion let reverse list 3 theList List fold left fun element recursive call

随机推荐

  • 独门秘籍奉上!听说这是CCF遥感地块分割比赛冠军的“获胜法宝”!

    飞桨开发者说 黎昆昌 CCF BDCI遥感影像地块分割赛道冠军团队 CCF BDCI 2020 综合特等奖团队队长 中国科学院深圳先进技术研究院20级硕士 CCF大数据与计算智能大赛 CCF BCI 由中国计算机学会于2013年创办 作为全
  • Nginx配置不缓存html

    Nginx配置不缓存html 1 配置nginx不缓存html 1 1 修改配置文件 1 2 验证 2 Vue项目修改根目录index html 1 配置nginx不缓存html 1 1 修改配置文件 location expires 1h
  • 有特别有创意的网站设计案例

    有人说 UI 设计师集艺术性与科学性于一身 不仅需要对工具的使用熟练 更需要对美术艺术有一定的基础了解 如果想要成为优秀的 UI 设计师是一个需要磨砺的过程 需要不断的学习和积累 多看多练多感受 其中对于优质的设计案例的收集和练习是重要的
  • 清晰、幽默、轻松地深入理解YOLOv5网络结构和一些细节(查阅无数资料文献总结)

    最近的一篇关于YOLOv5检测小目标博客的点击量很高 没想到YOLOv5还是很有影响力的 既然这样 今天本人就本着幽默 清晰 轻松的风格带大家深入了解一下YOLOv5那倾倒众生的网络结构 和它较之其他算法的改进之处 还是一句话 希望我的不经
  • JavaScript的一种单元测试框架:mocha

    mocha 如果你听说过 测试驱动开发 TDD Test Driven Development 单元测试就不陌生 单元测试是用来对一个模块 一个函数或者一个类来进行正确性检验的测试工作 比如对函数abs 我们可以编写出以下几个测试用例 输入
  • pytorch 2.0.1 版本 [gpu] 安装

    安装Anaconda 1 下载官网 我们下载anaconda的目的主要是为了下一步的python环境管理 所以不考虑anaconda与已有的python的版本是否匹配的问题 下方点击之后会出现 可以根据自己的需要下载安装包 本文以Windo
  • QSerialPort串口数据传输上位机实时显示

    1 项目背景 通过串口实时传输下位机造的一帧图像数据 然后利用qt编写上位机 实现图像数据的实时显示 并保存任意帧数据 2 效果展示 3 下位机代码 include bsp clk h include bsp delay h include
  • 使用Python爬取多篇各类新闻文章

    一 简介 这篇文章主要是使用python中的requests和BeautifulSoup库来爬取上万篇的新闻文章 我这里以科技类新闻为例来爬取2000篇新闻文章http news chinairn com News moref9fff1 h
  • Redis学习

    Redis简介 REmote DIctionary Server Redis 是一个由 Salvatore Sanfilippo 写的 key value 存储系统 是跨平台的非关系型数据库 Redis 是一个开源的使用 ANSI C 语言
  • {%csrf_token%}的作用

  • 电脑右键打印不见了_win7右键没有打印选项怎么办

    2016 08 29 17 37 49 浏览量 10456 Windows10正式版系统下 如果用户同时选择多个文件 且文件数量多到某个值时 通常这个值是16 点击右键 会看到右键菜单里的 打开 打印 编辑 选项消失了 而如果同时选中的文件
  • rabbitmq中消息的存储

    1 大概原理 所有队列中的消息都以append的方式写到一个文件中 当这个文件的大小超过指定的限制大小后 关闭这个文件再创建一个新的文件供消息的写入 文件名 rdq 从0开始然后依次累加 当某个消息被删除时 并不立即从文件中删除相关信息 而
  • mysql删除数据对索引的影响_mysql中索引可以删除吗?

    mysql中索引可以删除 可以使用 DROP INDEX 语句来对索引进行删除 语法格式 DROP INDEX ON 不用的索引建议进行删除 因为它们会降低表的更新速度 影响数据库的性能 删除索引是指将表中已经存在的索引删除掉 不用的索引建
  • C++ 继承

    面向对象程序设计中最重要的一个概念是继承 继承允许我们依据另一个类来定义一个类 这使得创建和维护一个应用程序变得更容易 这样做 也达到了重用代码功能和提高执行效率的效果 当创建一个类时 您不需要重新编写新的数据成员和成员函数 只需指定新建的
  • 简单三步实现远程支持

    引言 服务是当今企业的核心竞争力 及时 精准地帮助客户解决问题 将有效提升企业的客户满意度 带来续费和增购 企业通过远程桌面解决技术支持难题 当客户或同事遇到故障时 工程师可为其提供支持 在客户监督下远程操作设备进行诊断和排障 相比上门服务
  • 计算机网络(4.8)网络层- IP层转发分组的流程

    假设 有四个A类网络通过三个路由器连接在一起 每一个网络上都可能有成千上万个主机 可以想像 若按目的主机号来制作路由表 每一 路由表就有4万个项目 即4万行 每一行对应于 一台主机 则所得出的路由表就会过于庞大 但若按主机所在的网络地址来制
  • vue-cli3.0安装element-ui组件及按需引入element-ui组件

    在VUE CLI 3下的第一个Element ui项目 菜鸟专用 上面这个链接是vue cli3 0安装element ui的详细过程 如果想要按需引用看下面的 1 引入vue add element How do you want to
  • 给定两个字符串 S 和 T,求 S 中包含 T 所有字符的最短连续子字符串的长度,同时要求时间复杂度不得超过 O(n)。

    输入 两个字符串 S 和 T S ADOBECODEBANC T ABC 输出 一个 S 字符串的子串 BANC 在这个样例中 S 中同时包含一个 A 一个 B 一个 C 的最短子字符串是 BANC function func source
  • 小程序用户头像昵称获取不到解决办法

    1 根据官方要求 不会要求强制性授权 头像和昵称也将被收回 给的是统一的头像和昵称 需要我们调用接口去获取微信头像和昵称 2 通过原生的标签调用来获取微信头像和微信昵称 注意 这里的标签不能够修改 修改会导致头像回显问题和昵称获取问题 头像
  • OCaml实用工具

    好久没写博客了 天天写代码 有时候打游戏 就懒了 本人主要为了扩展sgx edger8r 所以学习了一番OCaml 多动手搜和写代码才算有点学会了OCaml 这里主要说一下OCaml工具的使用 OCaml的语法学习请直接参考官方手册 Rea