OCaml
Contents
Algorithms and Data Structures
OCaml library for combinatorics <https://www.lri.fr/~filliatr/combine/>.
Implementation of Rabin's fingerprint and delta compression by P. MacDonald in OCaml (same as libXdiff
Application Libraries
Large Source Code Examples
an OCaml API to write static analysis, dynamic analysis, code visualizations, code navigations, or style-preserving source-to-source transformations such as refactorings on source code.
library and tools for accessing and modifying virtual machine disk images
Benchmarking
Books
Code Analysis and Linters
SLAyer is an automatic formal verification tool that uses separation logic to verify memory safety of C programs.
MemCAD is an abstract interpreter for shape analysis. MemCAD can verify C programs manipulating complex data structures.
Program analysis
BAP is a reverse engineering and program analysis platform that targets binary programs.
Compilers and Compiler Tools
Parser and Lexer Generators
Sedlex is a modern, encoding-agnostic (read: Unicode-supporting) lexer generator (the ppx-based successor to ulex.)
a clearer example of using Menhir and Sedlex to produce a useful parser
Concurrency
Databases
Bindings
New Implementations
Developer Tools
Web app (written in OCaml) underlying the learn-ocaml-corpus. Can be customized to serve lectures (with Markdown slides), playgrounds (with a toplevel prelude), and interactive exercises (with OCaml tests). MIT License.
Minor mode for Emacs that can display exercise topics and grade exercise solutions, after logging to a Learn-OCaml instance. MIT License.
Foreign Function Interface
Editor Integration
An LSP language server for OCaml that integrates with any editor that understands LSP like VSCode, Vim and Emacs.
OCaml mode for Emacs that can run the toplevel and the debugger within Emacs.
Exercises and Short Examples
General
Graphics
2D
Internationalization
User Interface
Lambda-Term is a cross-platform library for manipulating the terminal. It provides an abstraction for keys, mouse events, and colors, as well as a set of widgets to write curses-like applications.
Notty is a declarative terminal library for OCaml, structured around the notion of composable images.
System Programming
Logging
Machine Learning
Libraries
Messaging
Metaprogramming
Syntax Extensions
Tools and Language Extensions
Mobile Applications
Networking
Package Management
Distribution
Build Tools
Printers helpers
Parallelism
A simple library for forking child processes to perform work on multiple cores.
A library for spawning processes on a cluster of machines, and passing typed messages between them.
Parallelize computation over independent items, even if there is an infinite number of them.
Project Starter Templates
Science and Technical Computing
Regular Expressions
Security and Cryptography
The Cryptokit library for OCaml provides a variety of cryptographic primitives that can be used to implement cryptographic protocols in security-sensitive applications.
Serialization
Testing
Utilities
Web Development
A REST toolkit for OCaml. OCaml webmachine is a layer on top of cohttp that implements a state-machine-based HTTP request processor. It's particularly well-suited for writing RESTful APIs. As the name suggests, this is an OCaml port of the webmachine project.
Caml on the Web (COW) is a set of parsers and syntax extensions to let you manipulate HTML, CSS, XML, JSON and Markdown directly from OCaml code.
Functional HTML scraping and manipulation with CSS selectors, à la Python's Beautiful Soup.