awesome-ocaml
A curated collection of awesome OCaml tools, frameworks, libraries and articles.
https://github.com/ocaml-community/awesome-ocaml
Last synced: 12 days ago
JSON representation
-
Algorithms and Data Structures
- Comparing a Machine Learning Algorithm Implemented in F# and OCaml
- OCamlgraph
- ods
- combine
- Decompress - A pure OCaml implementation of Zlib.
- Ke - Fast implementation of queue (FIFO) in OCaml.
- Duff - Implementation of Rabin's fingerprint and delta compression by P. MacDonald in OCaml (same as [libXdiff](http://www.xmailserver.org/xdiff-lib.html)
- ORaft - Library of [Raft consensus algorithm](https://raft.github.io/raft.pdf) implemented in OCaml
- ODiff
- ods
-
Application Libraries
- React
- Batteries Included - maintained foundation library for your OCaml projects.
- Cmdliner
- Core - fledged standard library overlay. A portable subset of Core is also available: [Core_kernel](https://github.com/janestreet/core_kernel).
- Base - Jane Street Capital's dependency-free, quick-compiling, fully-portable across any environment that can run OCaml code standard library.
- Minicli - line parsing.
- ocaml-rpc
- ocaml-containers
- React - varying values, declarative events, and signals.
- easy-format - printing library for OCaml.
-
Benchmarking
- Getting Started with Core_bench
- core_bench - benchmarking library for OCaml by Jane Street.
- benchmark - time of functions using latency or throughput.
-
Blogs
-
Books
- More OCaml: Algorithms, Methods, and Diversions
- How to Think Like a (Functional) Programmer - oriented paradigm, or those who simply want to learn OCaml.
- OCaml from the Very Beginning - OCaml from the Very Beginning will appeal both to new programmers, and experienced programmers eager to explore functional languages such as OCaml.
- Pearls of Functional Algorithm Design - It summarizes 30 hard algorithmic problems in the function programming world. Although it is for Haskell, the algorithm problems are very interesting, and trying to solve them in OCaml also helps the thinking of functional programming. Partial solutions in OCaml are [here](https://github.com/MassD/pearls).
- Using, Understanding, and Unraveling OCaml
- Purely Functional Data Structures - This is the first or only book focus on various data structures in FP world. A must-read one.
- Unix System Programming in OCaml
- OCaml for Scientists - by Jon Harrop.
- OCaml for Scientists - by Jon Harrop.
- Purely Functional Data Structures - This is the first or only book focus on various data structures in FP world. A must-read one.
- More OCaml: Algorithms, Methods, and Diversions - scale example dealing with the production of PDF files. There are questions for each chapter, along with worked-out answers and hints.
- OCaml from the Very Beginning - OCaml from the Very Beginning will appeal both to new programmers and experienced programmers eager to explore functional languages such as OCaml.
- How to Think Like a (Functional) Programmer - oriented paradigm, or those who simply want to learn OCaml.
- OCaml from the Very Beginning - OCaml from the Very Beginning will appeal both to new programmers and experienced programmers eager to explore functional languages such as OCaml.
- Using, Understanding, and Unraveling OCaml
- OCaml Programming: Correct + Efficient + Beautiful - Textbook on Functional Programming and Data Structures in OCaml - by Michael R. Clarkson et al.
-
Code Analysis and Linters
- Mascot - Mascot is a style-checker for OCaml sources.
- Infer - Infer is a static analyzer for Java, C and Objective-C
- Frama-C - Frama-C is a static analysis and formal proof framework for C and C++
- pfff - preserving source-to-source transformations such as refactorings on source code.
- flow - flow is a static type checker for JavaScript.
- SLAyer - SLAyer is an automatic formal verification tool that uses separation logic to verify memory safety of C programs.
- MemCAD - MemCAD is an abstract interpreter for shape analysis. MemCAD can verify C programs manipulating complex data structures.
- Camelot - Camelot is a modular and fully configurable OCaml linter and stylechecker.
- coq-of-ocaml - Translator from OCaml to Coq to formally verify OCaml code.
- MOPSA - MOPSA is a generic framework for building sound static analyzers based on the theory of abstract interpretation.
- Mascot - Mascot is a style-checker for OCaml sources.
- pfff - preserving source-to-source transformations such as refactorings on source code.
- Frama-C - Frama-C is a static analysis and formal proof framework for C and C++.
-
Community
-
Compilers and Compiler Tools
- Caramel - Caramel is a functional language for building type-safe, scalable, and maintainable applications.
- cDuce - cDuce is a modern XML-oriented functional language with innovative features.
- Compcert C Compiler - It is a C Compiler supporting most of the ISO C90 and C99 / ANSI C features.
- Eff Programming Language - Eff is a functional language with handlers of not only exceptions, but also of other computational effects such as state or I/O.
- Hack Programming Language
- Haxe Programming Language
- Neko Programming Language - Originally the compiler was written in OCaml.
- OCaml-Java - OCaml to Java bytecode compiler.
- Opa Programming Language
- Rust Programming Language - Originally written in OCaml before bootstrapping.
- Quick C-- Target Language - It is now a dead project. [Github Repo](https://github.com/nrnrnr/qc--). [Alternative website](http://www.cs.tufts.edu/~nr/c--/qc--.html).
- RaML - Resource Aware ML (RaML) is a tool that automatically and statically computes resource-use bounds for OCaml programs.
- Menhir
- Reason - Friendly syntax & toolchain for OCaml by Facebook.
- Mazeppa - A modern supercompiler for call-by-value functional languages.
- Mezzo Programming Language - Mezzo is a programming language in the ML tradition, which places strong emphasis on the control of aliasing and access to mutable memory.
- OCaml-Java - OCaml to Java bytecode compiler.
- Opa Programming Language
- Rhine
- Quick C-- Target Language - It is now a dead project. [Github Repo](https://github.com/nrnrnr/qc--). [Alternative website](http://www.cs.tufts.edu/~nr/c--/qc--.html).
- Liquid ML - Shopify's Liquid Templating language for OCaml.
- Opal - contained monadic parser combinators for OCaml.
- Sedlex - agnostic (read: Unicode-supporting) lexer generator (the ppx-based successor to [ulex](http://www.cduce.org/download.html#side).)
- Menhir
- Obelisk - text EBNF-style documentation for your grammar.
- Angstrom - Parser combinators built for speed and memory efficiency
- Quick C-- Target Language - It is now a dead project. [Github Repo](https://github.com/nrnrnr/qc--). [Alternative website](http://www.cs.tufts.edu/~nr/c--/qc--.html).
- Compcert C Compiler - It is a C Compiler supporting most of the ISO C90 and C99 / ANSI C features.
- cDuce - cDuce is a modern XML-oriented functional language with innovative features.
- tis-interpreter - An interpreter for finding subtle bugs in programs written in standard C
- Reason - Friendly syntax & toolchain for OCaml by Facebook.
- RaML - Resource Aware ML (RaML) is a tool that automatically and statically computes resource-use bounds for OCaml programs.
- ocaml-parsing
- ocamllex/ocamlyacc
- Kaleidoscope: Implementing a Language with LLVM in Objective Caml¶
-
Concurrency
- Real World OCaml - lwt) is also available.
- Lwt
- Async
- The blog post that introduced Async
- A user gives up on Async
- Effect Handlers - style ones.
- Eio - based direct-style IO for multicore OCaml.
- Miou
- Lwt
- A user gives up on Async
- Effect Handlers - style ones.
- Effect Handlers - style ones.
- Cooperative Concurrency in OCaml: A Core.Std.Async Example
-
Databases
- Dbm
- PG'OCaml - safe interface to PostgreSQL in pure OCaml.
- mysql
- Obigstore - like data model atop LevelDB.
- Implementing the Binary Memcached Protocol with Ocaml and Bitstring
- Interfacing OCaml and PostgreSQL with Caqti
- Finally, Type-Safe, Extensible and Efficient Language Integrated Query
- mysql
- Mongo.ml
- ppx_pgsql
- PostgreSQL-OCaml
- SQLite3
- Sqlite3EZ
- ocaml-redis
- mariadb - Bindings to MariaDB/MySQL, supporting the nonblocking API
- pgx
- mysql_protocol
- Irmin
- RunOrg - It is a WIP database server written in OCaml.
- dokeysto - dumb OCaml key-value store, string keys and string
- Sequoia - Sequoia is a type-safe query builder for MySQL/MariaDB and PostgreSQL
- Macaque
- ORM
- Caqti - Cooperative-threaded access to relational data
- Caqti setence preparation, ppx_rapper
- Interfacing OCaml and PostgreSQL with Caqti
- PG'OCaml - safe interface to PostgreSQL in pure OCaml.
- Obigstore - like data model atop LevelDB.
-
Datetime
-
Developer Tools
- Try OCaml
- BetterOCaml - platform web IDE with your OCaml code interpreted and running in your browser!
- codingground
- OCaml: Learn & Code iOS app - Learn and execute OCaml code from your iPhone/iPad/Mac.
- Modular foreign function bindings
- ocp-browser - based API and documentation browser.
- Sublime text package
- ocp-indent
- learn-ocaml - ocaml-corpus. Can be customized to serve lectures (with Markdown slides), playgrounds (with a toplevel prelude), and interactive exercises (with OCaml tests). MIT License.
- learn-ocaml.el - OCaml instance. MIT License.
- Jupyter
- utop - time and context-sensitive completion, colors, and more.
- ocamlformat - A command-line tool to format OCaml code.
- ghim - line tool to manage Github Issues.
- puml2xml
- ocaml-main-program-in-c
- Py.ml - OCaml bindings for Python.
- ocaml-lsp - An LSP language server for OCaml that integrates with any editor that understands LSP like [VSCode](https://github.com/microsoft/vscode), Vim and Emacs.
- merlin
- tuareg - OCaml mode for Emacs that can run the toplevel and the debugger within Emacs.
- opam-switch-mode - Minor mode for Emacs that extends Tuareg and Merlin with menus to change or reset the opam switch in the ambient Emacs session.
- merlin-eldoc
- vscode-ocaml
- OCaml Debugger
- Sublime better ocaml
- Sublime text package
- ocp-index - browser` and `ocp-grep`.
- ocp-index-top - index.
- ocp-indent
- Vim plugin
- Bisect_ppx
- Vim plugin
- OCaml: Learn & Code iOS app - Learn and execute OCaml code from your iPhone/iPad/Mac.
- codingground
- ocamlbrowser
- OCaml Yeoman Generator
- Sublime text package
- Sublime text package
-
Exercises and Short Examples
- 99 problems
- Rosetta Code
- OCaml at Exercism
- Programming Language Examples Alike Cookbook - The OCaml section of the book is a free reference for solving common programming problems using OCaml.
- learn-ocaml-corpus - to-advanced online exercises (including those from the OCaml MOOC) with automatic grading tests.
- Programming Language Examples Alike Cookbook - The OCaml section of the book is a free reference for solving common programming problems using OCaml.
- OCaml at Exercism
- 99 problems
- Rosetta Code
-
Formal Software Verification
Programming Languages
Categories
Developer Tools
38
Web Development
37
Compilers and Compiler Tools
35
Databases
28
General
22
Package Management
16
Metaprogramming
16
Books
16
Parallelism
15
Printers helpers
14
Questions
13
Concurrency
13
Code Analysis and Linters
13
Large Source Code Examples
11
Serialization
10
Algorithms and Data Structures
10
Application Libraries
10
Testing
10
Exercises and Short Examples
9
Language-related
9
User Interface
9
Internationalization
8
Community
8
Messaging
8
Graphics
8
Machine Learning
8
System Programming
7
Networking
7
Datetime
7
Online Courses
7
Blogs
7
Security and Cryptography
6
Program analysis
5
Formal Software Verification
5
Mobile Applications
4
Logging
4
Regular Expressions
4
Utilities
4
Project Starter Templates
3
Benchmarking
3
Videos
3
Semantic Technology
1
Metrics
1
Sub Categories
Keywords
ocaml
80
ocaml-library
5
http
5
mirageos
5
database
4
symbolic-execution
4
reasonml
4
static-analysis
4
c
4
opam
3
reverse-engineering
3
emacs
3
machine-learning
3
security
3
parser-combinators
3
git
3
parser
3
program-analysis
3
lwt
3
postgresql
3
programming-language
3
web
3
compiler
3
unikernel
2
http-client
2
binary-analysis
2
async
2
xml
2
minimalist
2
template-engine
2
sql
2
webassembly
2
effects
2
multicore
2
smt
2
unit-testing
2
diff
2
linear-algebra
2
learn-ocaml
2
matrix
2
neural-network
2
data-structures
2
algorithms
2
ocaml-bindings
2
gadt
2
testing
2
dune
2
taint-analysis
2
reason
2
optimization
2