很棒的 OCaml
¶
> 你在掌握 OCaml 的道路上所需要的一切.
精选的 OCaml 工具、框架、库和文章的参考列表. 此外,还有一系列免费提供 books, papers 和 presentations.
如果您正在寻找有关 OCaml 的综合社区驱动内容,请访问OCamlverse!
有关现代 OCaml 开发工作流程的快速介绍,请参阅 Up and Running with OCaml 教程.
没有列出您喜欢的包? 叉和 create a Pull Request 添加它!
Community¶
- Official OCaml Website
- OCaml Discourse Web Forum
- OCaml Discord Chat
- Official OCaml Mailing List
- OCaml Planet
- OCaml SubReddit
Algorithms and Data Structures¶
- Comparing a Machine Learning Algorithm Implemented in F# and OCaml
- OCamlgraph – OCaml 的通用图形库.
- ods – OCaml 的大量数据结构和算法.
- combine – 用于组合学的 OCaml 库https://www.lri.fr/~filliatr/combine/ .
- Decompress - Zlib 的纯 OCaml 实现.
- Ke - 在 OCaml 中快速实现队列 (FIFO).
- Duff - P. MacDonald 在 OCaml 中实现 Rabin 的指纹和增量压缩(与 libXdiff
- ORaft - 图书馆 Raft consensus algorithm 在 OCaml 中实现
Application Libraries¶
- Batteries Included – 用于 OCaml 项目的社区维护基础库.
- Cmdliner – OCaml 命令行界面的声明性定义.
- Core – Jane Street Capital 成熟的标准库覆盖. Core 的可移植子集也可用: Core_kernel.
- Base - Jane Street Capital 的无依赖、快速编译、完全可移植的跨越任何可以运行 OCaml 代码的环境的标准库.
- React – React 是用于函数式反应式编程 (FRP) 的 OCaml 模块. 它为具有时变值的程序提供支持:声明性事件和信号.
- Minicli - 用于命令行解析的极简库.
- easy-format – OCaml 的漂亮打印库.
- ocaml-rpc – 用于处理 OCaml 中的 RPC 的轻型库.
- ocaml-containers – 一个轻量级的、模块化的标准库扩展、字符串库和各种库的接口(bigarrays、unix 等). BSD 许可证.
Benchmarking¶
- core_bench – Jane Street 的 OCaml 微基准测试库.
- Getting Started with Core_bench
- benchmark – 用于使用延迟或吞吐量测量函数运行时间的基准函数.
Blogs¶
Books¶
- More OCaml: Algorithms, Methods, and Diversions – 在更多 OCaml 中 John Whitington 用 OCaml 进行了函数式编程的曲折之旅,介绍了各种语言特性并描述了一些经典算法. 本书以处理 PDF 文件生成的大型实例结尾. 每章都有问题以及有效的答案和提示.
- How to Think Like a (Functional) Programmer 作者:Allen Downey 和 Nicholas Monje – 如何像计算机科学家一样思考是一本基于 OCaml 语言的编程入门教科书. 它是 Allen Downey 的 Think Python 的修改版本. 它适用于编程新手,也适用于那些了解一些编程但想在面向函数范式中学习编程的人,或者那些只想学习 OCaml 的人.
- OCaml from the Very Beginning 作者:J. Whitington - OCaml from the Very Beginning 将吸引新程序员和渴望探索 OCaml 等函数式语言的经验丰富的程序员.
- Pearls of Functional Algorithm Design 作者 Richard Bird - 它总结了函数编程世界中的 30 个硬算法问题. 虽然是Haskell,但是算法题很有意思,尝试用OCaml解决也有助于函数式编程的思考. OCaml 中的部分解决方案是 here.
- Real World OCaml Y. Minsky、A. Madhavapeddy 和 J. Hickey - 面向大众的函数式编程.
- Unix System Programming in OCaml 作者:X. Leroy 和 D. Rémy – Unix 系统编程简介,重点是进程之间的通信.
- Using, Understanding, and Unraveling OCaml – 本书描述了 OCaml 语言及其强大类型系统背后的理论基础.
- Purely Functional Data Structures - 这是第一本也是唯一一本关注 FP 世界中各种数据结构的书. 必读之作.
- OCaml for Scientists - 乔恩哈罗普.
- Functional Programming in OCaml: A Principled Approach - 康奈尔大学 OCaml CS 3110 函数式编程教科书.
Code Analysis and Linters¶
- Mascot - Mascot 是 OCaml 源代码的样式检查器
- pfff – pfff 是一组工具和 API,用于执行一些静态分析、动态分析、代码可视化、代码导航或保持样式的源到源转换,例如源代码重构.
- Infer - Infer 是 Java、C 和 Objective-C 的静态分析器
- Frama-C - Frama-C 是 C 和 C++ 的静态分析和形式证明框架
- flow - flow 是 JavaScript 的静态类型检查器
- SLAyer - SLAyer 是一种自动形式化验证工具,它使用分离逻辑来验证C 程序的内存安全性.
- MemCAD - MemCAD 是用于形状分析的抽象解释器. MemCAD 可以验证处理复杂数据结构的 C 程序.
- Camelot - Camelot 是一个模块化且完全可配置的 OCaml linter 和 stylechecker.
- coq-of-ocaml - 从 OCaml 到 Coq 的翻译器,以正式验证 OCaml 代码.
Program analysis¶
- BAP - BAP 是一个针对二进制程序的逆向工程和程序分析平台.
- BinCat - BinCat 是一个二进制代码静态分析工具包.
- cwe_checker - cwe_checker 在二进制可执行文件中发现易受攻击的模式.
Compilers and Compiler Tools¶
- 语言和编译器:
- Caramel - Caramel 是一种函数式语言,用于构建类型安全、可扩展和可维护的应用程序.
- cDuce - cDuce 是一种具有创新功能的现代面向 XML 的函数式语言.
- Compcert C Compiler - 它是一个支持大多数 ISO C90 和 C99 / ANSI C 特性的 C 编译器.
- Eff Programming Language - Eff 是一种函数式语言,不仅可以处理异常,还可以处理其他计算效果,例如状态或 I/O.
- Hack Programming Language
- Haxe Programming Language
- Neko Programming Language - 最初编译器是用 OCaml 编写的.
- Mezzo Programming Language - Mezzo 是 ML 传统中的一种编程语言,它非常强调对别名的控制和对可变内存的访问.
- OCaml-Java - OCaml 到 Java 字节码编译器.
- Opa Programming Language
- Rhine – 用 OCaml 编写的 LLVM 上的 Lisp.
- Rust Programming Language - 最初在引导之前用 OCaml 编写.
- Quick C-- Target Language - 它现在是一个死项目. Github Repo. Alternative website.
-
tis-interpreter - 用于查找用标准 C 编写的程序中的细微错误的解释器
-
Reason - Facebook 的 OCaml 友好语法和工具链.
-
RaML - Resource Aware ML (RaML) 是一种自动和静态计算 OCaml 程序的资源使用范围的工具.
-
解析器和词法分析器生成器:
- Opal – 用于 OCaml 的独立单子解析器组合器.
- Sedlex 是一个现代的、与编码无关的(阅读:支持 Unicode 的)词法分析器生成器(基于 ppx 的继任者 ulex.)
- Menhir – Menhir 是 OCaml 的 LR(1) 解析器生成器.
- 看 ocaml-parsing for a clearer example of using Menhir and Sedlex to produce a useful parser,
- ... 和 Obelisk,一个简洁的项目,可以为您的语法生成可读的 LaTeX、HTML 或纯文本 EBNF 样式的文档.
- ocamllex/ocamlyacc – OCaml 的 lex 和 yacc 实现.
- Angstrom - 为速度和内存效率而构建的解析器组合器
- 文章:
- Kaleidoscope: Implementing a Language with LLVM in Objective Caml¶
Concurrency¶
OCaml 中存在两个并发库:Lwt 和 Async. 它们提供非常相似的功能,但在错误处理和内部实现细节方面做出截然不同的决定(有关更多详细信息,请参见下面的链接). Real World OCaml 使用 Async 但一个版本 code examples translated to Lwt 也可用.
- 图书馆:
- Lwt — OCaml 的协作线程库.
- Async — 与核心库一起使用的单子并发库.
- 文章:
- The blog post that introduced Async
- A user gives up on Async
- Cooperative Concurrency in OCaml: A Core.Std.Async Example.
还有一个正在进行的实验项目,使 OCaml 多处理器和多核感知在 OCaml multicore 叉.
Databases¶
- 绑定
- Dbm — 绑定到 NDBM/GDBM Unix“数据库”.
- Mongo.ml – Mongodb 的 OCaml 驱动程序
- PG'OCaml — 纯 OCaml 中 PostgreSQL 的类型安全接口.
- ppx_pgsql – 使用 PG'OCaml 的嵌入式 SQL 查询的语法扩展.
- PostgreSQL-OCaml — 通过 C API (
libpq
) 到 PostgreSQL 的接口. - SQLite3 — OCaml 绑定到 SQLite3 数据库.
- Sqlite3EZ — 具有简化界面的 SQLite3 的瘦包装器.
- ocaml-redis – OCaml 的 Redis 绑定.
- mysql – 绑定到 libmysqlclient 以与 MySQL 数据库交互.
- pgx – 纯 OCaml PostgreSQL 客户端库 .
- mysql_protocol – 使用 Bitstring 库实施 MySQL 协议.
- 新实现
- Irmin — 遵循与 Git 相同设计原则的分布式数据库.
- Obigstore — 在 LevelDB 之上具有类似 BigTable 数据模型的数据库.
- RunOrg - 这是一个用 OCaml 编写的 WIP 数据库服务器.
-
dokeysto - 愚蠢的 OCaml 键值存储、字符串键和字符串 值. 可选的动态 LZ4 值压缩或 tokyocabinet 后端.
-
叠加
- Sequoia - Sequoia 是用于 MySQL/MariaDB 和 PostgreSQL 的类型安全查询生成器
- Macaque — Macaque 是一个在 PG'OCaml 之上使用推导式进行安全灵活的数据库查询的库.
- ORM — SQLite 的 ORM.
- Caqti - 对关系数据的协作线程访问
- 文章:
- Implementing the Binary Memcached Protocol with Ocaml and Bitstring
- Interfacing OCaml and PostgreSQL with Caqti
- Caqti setence preparation, ppx_rapper
Datetime¶
Developer Tools¶
- Try OCaml – 在您的网络浏览器中试用 OCaml.
- BetterOCaml – 一个高效、直观和跨平台的 Web IDE,您的 OCaml 代码可以在浏览器中解释和运行!
- codingground – 在线编译和执行 OCaml 代码.
- OCaml: Learn & Code iOS app - 从您的 iPhone/iPad/Mac 学习和执行 OCaml 代码.
- Jupyter – 用于 Jupyter notebook 的 OCaml 内核.
- utop – OCaml 的通用顶层,支持多行版本、历史、实时和上下文敏感的完成、颜色等.
- ocamlformat - 用于格式化 OCaml 代码的命令行工具.
- ocamlbrowser – 源代码和编译界面浏览器,使用 LablTk 编写. 包含在 ocaml <= 4.01 的标准发行版中,以及 ocaml >= 4.02 的 labltk 中.
- ghim – 管理 Github Issues 的命令行工具.
-
OCaml Yeoman Generator – 用于构建 OCaml 模块的 Yeoman 生成器.
-
外部函数接口:
- ctypes – 使用纯 OCaml 绑定到 C 库的库.
- ocaml-main-program-in-c – 用于制作混合 C/Ocaml 二进制文件的示例构建系统,其中主程序在 C 中.
- Modular foreign function bindings
- Py.ml - Python 的 OCaml 绑定.
- 编辑器集成:
- ocaml-lsp - 用于 OCaml 的 LSP 语言服务器,可与任何理解 LSP 的编辑器集成,例如 VSCode、Vim 和 Emacs.
- merlin – Vim 和 Emacs 中 Ocaml 的上下文敏感完成.
- tuareg - Emacs 的 OCaml 模式,可以在 Emacs 中运行顶层和调试器.
- merlin-eldoc – Emacs 包通过 eldoc 提供 merlin 的功能.
- vscode-ocaml – 提供 OCaml 语言支持的扩展 VSCode
- OCaml Debugger – 提供 OCaml 调试器的扩展 VSCode
- Sublime better ocaml – 用于 Sublime Text 的更好的 OCaml 模式.
- ocp-index – 轻松访问已安装的 OCaml 库的接口信息. 提供诸如 ocp-browser 和 ocp-grep 之类的独立工具.
- ocp-browser – 基于 ncurses 的小型 API 和文档浏览器.
- ocp-index-top – 使用 ocp-index 查找文档的顶级指令.
- Sublime text package
- ocp-indent – OCaml 的缩进工具,可从 Emacs 和 Vim 等编辑器中使用.
- 代码覆盖率:
- Bisect_ppx
Exercises and Short Examples¶
- 99 problems . 99%的解决方案是 here.
- Rosetta Code
- OCaml at Exercism – Exercism 是您进行深思熟虑的代码对话的场所. 探索简单性、惯用的语言特性和富有表现力的可读代码. Solutions.
- Programming Language Examples Alike Cookbook - 本书的 OCaml 部分是使用 OCaml 解决常见编程问题的免费参考.
Formal Software Verification¶
- Coq – Coq 是一个正式的证明管理系统. 它提供了一种形式化语言来编写数学定义、可执行算法和定理,以及用于机器检查证明的半交互式开发的环境.
- Why3 – Why3 是一个用于演绎程序验证的平台. 它为规范和编程提供了丰富的语言,称为 WhyML,并依赖于自动化和交互式的外部定理证明器来满足验证条件.
- Alt-Ergo – Alt-Ergo 是一个开源的 SMT 求解器,专门用于证明在程序验证的上下文中生成的数学公式.
General¶
- Functional Programming with OCaml
- Python to OCaml: retrospective
- OCaml for the Masses
- Why We Use OCaml
- Xen – OCaml Coding Considerations
- Monads are a class of hard drugs
- Beginner's guide to OCaml
- Why OCaml, why now?
- A blog about game development in OCaml
- (Functional) Alternatives to inheritance
- camlPDF – 用于阅读、编写和修改 PDF 文件的 OCaml 库.
- slacko – OCaml 中 Slack 的简洁界面.
- Learn X in Y minutes - 其中 X=OCaml.
Graphics¶
- 2D
- archimedes — 二维绘图库.
- cairo2 — 绑定到开罗,一个二维矢量图形库. 与 lablgtk 很好地集成.
- Vg – OCaml 的声明性二维矢量图形.
- 3D
- glMLite — OCaml 的 OpenGL 绑定. 提供一个(实验性的)功能 API. (homepage)
- lablgl — OpenGL 接口. 与 lablgtk 很好地集成.
- tgls — 精简绑定 OpenGL 3.{2,3},4.{0,1,2,3,4} 和 OpenGL ES {2,3}.
Internationalization¶
- Camomile — OCaml 的 Unicode 库.
- ocaml-m17n — OCaml 源代码的多语言化. 允许在 OCaml 源代码中使用 Unicode 标识符.
- Uucd — OCaml 的 Unicode 字符数据库解码器.
- Uucp — OCaml 的 Unicode 字符属性.
- Uunf — OCaml 的 Unicode 文本规范化.
- Uuseg — OCaml 的 Unicode 文本分割.
- Uutf — OCaml 的非阻塞流式 Unicode 编解码器.
User Interface¶
- lablgtk — OCaml 的 GTK2 和 GTK3 绑定以及用于定义 GUI 的各种高级工具.
- lablqml – OCaml 的 QML Qt5 绑定.
- labltk — Tcl/Tk GUI 框架的接口. 在 ocaml <= 4.01 的标准分布中.
- TSDL – Tsdl 是一个 OCaml 模块,提供到跨平台 SDL 库的精简绑定.
- Lambda-Term – Lambda-Term 是一个用于操作终端的跨平台库. 它为键、鼠标事件、颜色以及一组小部件提供了抽象,以编写类似 curses 的应用程序.
- Notty - Notty 是 OCaml 的声明性终端库,围绕可组合图像的概念构建.
- ocaml-linenoise - 独立的 OCaml 绑定到 linenoise,OCaml 中简单的高级 readline 功能.
Language-related¶
- Higher-Rank Polymorphism in OCaml
- mikmatch – 使用正则表达式扩展的 OCaml 模式匹配
- Inlined records in constructors
- Algebraic Data Types
- XEN – OCaml Best Practices for Developers
- OCaml Style Guide (by Jane Street) - 另见:[1],[2],[3].
- A safe but strange way of modifying OCaml compiler
- Fiddling with the OCaml Type System
Large Source Code Examples¶
- Base - OCaml 的标准库
- cil - C 中间语言
- coq - 正式证明管理系统
- Dark - 一种组合的语言、编辑器和基础架构,可以轻松构建后端
- frama-c - 专门用于分析用 C 编写的源代码的平台
- libguestfs - 用于访问和修改虚拟机磁盘映像的库和工具
- Liquidsoap - 用于多媒体流媒体的瑞士军刀,尤其适用于 netradios 和 webtv
- mirage - 为跨各种云计算和移动平台的安全、高性能网络应用构建 unikernel 的图书馆操作系统
- MLDonkey - 跨平台多网络点对点守护进程
- Oni2 - 本机、轻量级模态代码编辑器
- pfff - 一个 OCaml API,用于编写静态分析、动态分析、代码可视化、代码导航或保持样式的源到源转换,例如源代码重构.
- WHY3 - 演绎程序验证平台
- xen-api - 配置和控制支持 Xen 的主机和资源池并协调池内资源的管理堆栈
Logging¶
Machine Learning¶
- 图书馆
- Ocaml-sklearn 用于 OCaml 的 scikit-learn.
- Owl - 具有神经网络、算法微分和 ONNX 支持的科学图书馆.
- Object detection convolutional neural network with OCaml (based on Owl).
- PyTorch bindings - PyTorch 的 OCaml 绑定.
- 文章
Messaging¶
- ocaml-zmq – 带有异步和 Lwt 包装器的 OCaml 的 ZeroMQ 绑定.
- onanomsg – OCaml 的 nanomsg 绑定.
- Kafka – Apache Kafka 的 OCaml 绑定.
- AMQP – 用于 Async 和 Lwt 的 AMQP 客户端库.
- MPI – OCaml 的消息传递接口绑定.
- MQTT – MQTT pubsub 协议的 OCaml 实现.
- capnp-ocaml – 用于 Cap'n Proto 序列化框架的 OCaml 代码生成器插件.
Metaprogramming¶
- 文章:
- A Guide to Extension Points in OCaml
- Extension Points, or how OCaml is becoming more like Lisp
- Syntax extensions without Camlp4: let's do it!
- Reading Camlp4 – Ambassador to the Computers
- 语法扩展:
- ppx_import – Import 是一种语法扩展,允许从其他已编译的接口文件中提取类型或签名.
- ppx_string_interpolate – 一个简单的 ppx 过滤器,支持字符串插值,如
[%str "value of foo is $(foo)"]
. - ppx_monad – OCaml 的 Monad 语法扩展.
- ppx_deriving_yojson – 用于 OCaml 的 Yojson 编解码器生成器.
- 工具和语言扩展:
- MetaOCaml – 用于多阶段编程的 OCaml 方言.
- Fan – Fan 是 OCaml 的编译时元编程系统,最初受到 Camlp4 的启发. 它是 OCaml 和 Lispy 宏的组合. 它与 OCaml 共享相同的具体语法.
- camlp5 - Camlp5 是 OCaml 的预处理器漂亮打印机.
- camlp4 - Camlp4 是标准 OCaml 发行版的一部分,与 Camlp5 不同.
Metrics¶
- prometheus – 用于 Prometheus 监控的 OCaml 客户端库.
Mobile Applications¶
- 文章:
- OCaml on iOS 7 Released
- OCaml + Cordova = more secured, typed and hybrid mobile applications
- 绑定:
- Cordova plugins – 与 Cordova 插件的绑定列表. 在 OCaml 中访问本地设备组件,如加速度计、SMS、地理定位等.
Networking¶
- HTTP 工具:
- ocaml-cohttp – 使用 Lwt 或 Async 的非常轻量级的 HTTP 服务器.
- ocurl – OCaml bindings to libcurl.
- httpaf – 用 OCaml 编写的高性能、内存高效且可扩展的 Web 服务器.
- piaf - 完全用 OCaml 编写的 HTTP/1.X / HTTP/2 的客户端/服务器库.
- ocaml-dns – DNS 协议的纯 OCaml 实现.
- fluent-logger – OCaml 的 Fluentd 记录器.
- charrua-unix - charrua-unix 是一个基于 Unix DHCP 守护进程 charrua-core.
Online Courses¶
- Introduction to Functional Programming in OCaml.
- Cornell University – Data Structures and Functional Programming.
- Princeton University - Functional programming in OCaml.
- University of Illinois - 使用 OCaml 教授函数式编程和编程语言设计的课程
Package Management¶
- 分配:
- OPAM – 灵活的 Git 友好包管理器,支持多种编译器.
- ocamlfind — 本地 OCaml 库管理器. 被大多数 OCaml 生态系统使用.
- OCaml for Windows - 适用于 Windows 的 opam 存储库和实验版本(自 2021 年起弃用).
- Diskuv OCaml - 适用于 Windows 的 Diskuv OCaml 发行版.
- makorel – 轻松发布 OPAM 包.
-
esy - 使用 Reason/OCaml 进行本机开发的 package.json 工作流.
-
构建工具:
- dune – 用于 OCaml(以前的 jbuilder)的可组合和自以为是的构建系统
- Oasis - 在您的 OCaml 项目中集成配置、构建和安装系统的工具. 它有助于在您的构建系统中创建标准入口点,并允许外部工具轻松分析您的项目.
- oasis2opam — 将 OASIS 元数据转换为 OPAM 包描述的工具.
- obuild – Simple package build system for ocaml.
- ocaml-makefile — 易于使用的 Makefile 用于中小型 OCaml 项目.
- topkg — 使用 ocamlbuild 的 OPAM 感知打包系统.
- Bazel - OCaml 规则 Bazel,谷歌的多语言和平台构建工具.
Parallelism¶
(注:从易用到灵活排序.)
- 图书馆:
- Parmap — 提供易于使用的平行映射和折叠功能.
- ForkWork — 一个简单的库,用于分叉子进程以在多个核心上执行工作.
- Functory — 一个分布式计算库,它有助于以无缝方式分布式执行可并行计算.
- Rpc.Parallel — 用于在机器集群上生成进程并在它们之间传递类型化消息的库.
- Ocamlnet — 增强的系统平台库. 包含“netmulticore”库以根据需要在尽可能多的机器内核上计算任务.
- Nproc – OCaml 的进程池实现.
- Parany – 对独立项目进行并行计算,即使它们的数量是无限的.
- Sklml – 用于 OCaml 程序的功能性并行骨架编译器和编程系统.
-
SPOC - 用于将密集计算卸载到并行加速器(多核 CPU、GPU 和其他与 GPGPU 框架兼容的加速器)的库和语法扩展.
-
文章:
- What is the state of OCaml's parallelization abilities?
Printers helpers¶
- 理性的本机 Console.log
- Dum
- Inspect
- ppx_deriving 的
[@@deriving show]
. - refl , 类似 ppx_deriving 的.
- lrt ,另一个类似 ppx_deriving 的.
- tpf ,又是类似 ppx_deriving 的.
- typerep ,可能是 ppx_deriving-like 与 ppx_typerep_conv.
- repr,除了让用户在需要的地方传递它之外,它似乎让用户从组合器手动构建类型表示.
- data-encoding,也完全手动.
- cmon ,全手动.
- dyn 在沙丘. 似乎也是完全手动
- Genprint
- OCaml@p
Project Starter Templates¶
- drom - drom 工具是 opam/dune 的包装器,旨在提供类似货物的用户体验.
- spin - Reason 和 Ocaml 项目生成器
- modern-ocaml - 使用现代工具的 ocaml 项目模板
Questions¶
Science and Technical Computing¶
- biocaml – OCaml 生物信息学库http://biocaml.org .
- bistro – 用于构建生物信息学管道的 OCaml 库.
- lacaml - 用于 BLAS/LAPACK(高性能线性代数 Fortran 库)的 OCaml 绑定.
- obandit - 用于多臂强盗的 OCaml 库.
- onumerical – OCaml 的数字库.
- oml - 用于一般数值工作的 OCaml 库.
- ocephes - 绑定到常用的“C”特殊函数库.
- slap - OCaml 中的线性代数库,具有针对矩阵运算的基于类型的静态大小检查.
- tensorflow-ocaml – TensorFlow 的 OCaml 绑定.
- owl - OCaml 数值库:密集和稀疏矩阵、线性代数、回归、数学和统计函数.
Regular Expressions¶
- Re – 带有组合器的纯 OCaml 正则表达式库,支持多种格式(glob、posix、str ...)
- ocaml-pcre – 绑定到 PCRE 库(perl 兼容的正则表达式)
- Humane-re – Humane-re 试图为 90% 的正则表达式需求提供一个简单的界面,由 ocaml-re 提供
- Tyre - Tire 是一组组合器,用于构建类型安全的正则表达式,允许自动提取和修改匹配组.
Security and Cryptography¶
- ocaml-tls – 纯 OCaml 中的 TLS.
- Digestif - OCaml 和 C 中的哈希算法(如 SHA 或 BLAKE2).
- cryptokit – OCaml 的 Cryptokit 库提供了多种加密原语,可用于在安全敏感应用程序中实施加密协议.
- nocoiner - 用于多方计算的承诺方案库,例如在线拍卖和赌博.
- nocrypto – ocaml-tls 项目背后的小型加密库. 它被构建为易于使用,遵循函数式编程原则并能够在基于 Xen 的 unikernel 中运行.
> 注意:nocrypto
和 cryptokit
加密库之间的区别在以下博客文章中进行了描述: OCaml-TLS: building the nocrypto library core.
Semantic Technology¶
- OCaml-RDF – OCaml 库,用于操作 RDF 图和执行 Sparql 查询.
Serialization¶
- bencode — Bencode(.torrent 文件格式)读取器/写入器.
- biniou – 可扩展的二进制数据格式,如 JSON 但速度更快.
- cbor — OCaml 本机 CBOR 解码器/编码器.
- jsonm — OCaml 的非阻塞流式 JSON 编解码器.
- xmlm — 用于解码和编码 XML 数据格式的流式编解码器.
- yojson — 针对 JSON 格式优化的解析和打印库.
- sexplib – S 表达式解析器和打印机
System Programming¶
- Mirage OS – Mirage 是一种编程框架,用于跨各种云计算和移动平台构建安全、高性能的网络应用程序.
- ocaml-fat – 从 OCaml 读取和写入 FAT 格式的文件系统.
- ocaml-git – 纯 OCaml 低级 git 绑定.
-
ocaml-vchan – “vchan”共享内存通信协议的纯 OCaml 实现.
-
嵌入式系统
- OMicroB - 设计用于在 AVR(例如 Arduino)微控制器上运行 OCaml 字节码的虚拟机.
- OCaPIC - 用于 PIC18 微控制器的 OCaml 虚拟机.
- ocaml-esp32 - ESP32 SoC 的编译器.
Testing¶
- Alcotest - 一个轻量级和丰富多彩的测试框架.
- OUnit – OUnit 是 OCaml 的单元测试框架. 它允许人们轻松地为 OCaml 代码创建单元测试. 它基于 HUnit,Haskell 的单元测试框架.
- QCheck — QCheck 是一个属性测试库,灵感来自 Haskell 的 QuickCheck
- iTeML (原名 qtest) — 支持内联编译指示以生成测试.
- Kaputt — 全面的测试框架.
- Pa_test — 通用内联测试宏.
- TestSimple - 兼容的轻量级单元测试框架 Test Anything Protocol.
- expect-test — 在 OCaml 中编写测试的框架,类似于 Cram, 由开发 JaneStreet.
Utilities¶
- ocaml-cuid - 用于服务器可扩展性和数据库性能的抗冲突 ID.
- Uuidm - Uuidm 是一个 OCaml 模块,根据 RFC 4122 实现 128 位通用唯一标识符版本 3、5(基于 MD5、SHA-1 哈希的名称)和 4(基于随机).
Web Development¶
- 构架:
- Opium – 类似 Sinatra 的 OCaml 网络工具包.
- Ocsigen Eliom – Eliom 是一个功能齐全的多层框架,用于将多平台 Web 和移动应用程序开发为 100% OCaml 分布式应用程序. 它还可以用于更传统的 Web 或移动应用程序:网站、单页应用程序、REST API 等.
- Dream - OCaml 和 ReasonML 的 Tidy Web 框架
- webmachine – OCaml 的 REST 工具包. OCaml webmachine 是 cohttp 之上的一个层,它实现了一个基于状态机的 HTTP 请求处理器. 它特别适合编写 RESTful API. 顾名思义,这是 webmachine 项目的 OCaml 端口.
- incr_dom - 使用 Js_of_ocaml 构建动态网络应用程序的库
-
ocaml-vdom - OCaml 的 Elm 架构和 (V)DOM
-
工具:
- COW – Web 上的 Caml (COW) 是一组解析器和语法扩展,可让您直接从 OCaml 代码操作 HTML、CSS、XML、JSON 和 Markdown.
- Ocamlnet 有很多相关的网络图书馆—— Nethtml html解析器, Netasn1 对于 ASN.1 解析, Netencoding 对于 Base64、Quoted Printable、URL 编码和 HTML 转义, Netmime 用于 MIME 处理等.请参阅 list of 模块 在 Ocamlnet 的手册中.
- tyxml — 构建有效(根据 W3C 规范)Html 和 Svg 树的库.
- js_of_ocaml – Js_of_ocaml 是 OCaml 字节码到 Javascript 的编译器. 它使得在 Web 浏览器中运行 Ocaml 程序成为可能.
- commonjs_of_ocaml - 从 js_of_ocaml 项目轻松导入和导出 CommonJS 模块.
- ReScript - ReScript 是一种强类型语言,可编译为高效且人类可读的 JavaScript.
- ocaml-uri – RFC3986 URI 解析库.
- Goji – 用于 JavaScript 库的 OCaml 绑定生成器.
- Syndic – RSS 和 Atom 提要解析
- ocaml-mustache – OCaml 中的 mustache.js 无逻辑模板.
- atdjs – OCaml/js_of_ocaml 的 atd 代码生成器.
- jingoo – OCaml 模板引擎几乎与 jinja2 兼容.
- dispatch – 客户端和服务器端应用程序的基于路径的调度.
- Lambda Soup - 使用 CSS 选择器进行功能性 HTML 抓取和操作,就像 Python 的 Beautiful Soup.
- Markup.ml - 错误恢复流式 HTML5 和 XML 解析器、序列化器.
- gen_js_api - gen_js_api 旨在简化为 Javascript 库创建 OCaml 绑定.
-
routes - OCaml/ReasonML 网络应用程序的类型化路由.
-
开源项目:
- Cumulus – 黑客新闻,例如使用 OCaml 框架 Ocsigen 的网站
受 awesome projects 系列的启发. 发现 more awesomeness .