Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
awesome-ocaml
A curated collection of awesome OCaml tools, frameworks, libraries and articles.
https://github.com/ocaml-community/awesome-ocaml
Last synced: 5 days ago
JSON representation
-
Compilers and Compiler Tools
- Haxe Programming Language
- 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
- 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
- ocamllex/ocamlyacc
- 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.
- 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.
- ocaml-parsing
- Reason - Friendly syntax & toolchain for OCaml by Facebook.
- Kaleidoscope: Implementing a Language with LLVM in Objective Caml¶
- Mazeppa - A modern supercompiler for call-by-value functional languages.
-
Developer Tools
- ocamlbrowser
- Modular foreign function bindings
- 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.
- Sublime text package
- ocp-indent
- OCaml: Learn & Code iOS app - Learn and execute OCaml code from your iPhone/iPad/Mac.
- OCaml Yeoman Generator
- ctypes
- Sublime text package
- Sublime text package
- Vim plugin
- ocp-browser - based API and documentation browser.
-
Community
-
Algorithms and Data Structures
- Comparing a Machine Learning Algorithm Implemented in F# and OCaml
- ods
- 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
- React
- easy-format - printing library for OCaml.
- 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.
-
Benchmarking
-
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.
- 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.
- 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
- Functional Programming in OCaml: A Principled Approach - Textbook for CS 3110 Functional Programming in OCaml, Cornell University.
- 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).
-
Code Analysis and Linters
-
Concurrency
-
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
- PG'OCaml - safe interface to PostgreSQL in pure OCaml.
- mysql
- Obigstore - like data model atop LevelDB.
- mysql
-
Datetime
-
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.
- 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.
-
Formal Software Verification
- Coq - interactive development of machine-checked proofs.
- Why3
- Alt-Ergo - Ergo is an open-source SMT solver dedicated to the proof of mathematical formulas generated in the context of program verification.
- Why3
- Alt-Ergo - Ergo is an open-source SMT solver dedicated to the proof of mathematical formulas generated in the context of program verification.
- Alt-Ergo - Ergo is an open-source SMT solver dedicated to the proof of mathematical formulas generated in the context of program verification.
-
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
- Learn X in Y minutes - Where X=OCaml.
- OCaml for the Masses
- Why We Use OCaml
- Xen – OCaml Coding Considerations
- Why OCaml, why now?
- A blog about game development in OCaml
- (Functional) Alternatives to inheritance
-
Graphics
-
User Interface
-
Language-related
- Higher-Rank Polymorphism in OCaml
- Inlined records in constructors
- Algebraic Data Types
- XEN – OCaml Best Practices for Developers
- OCaml Style Guide (by Jane Street) - See also: [[1]](https://www.seas.upenn.edu/~cis500/cis500-f06/resources/programming_style.html), [[2]](http://www.cs.cornell.edu/Courses/cs312/2001sp/style.html), [[3]](https://www.seas.upenn.edu/~cis120/20fa/ocaml_style/).
- A safe but strange way of modifying OCaml compiler
- Fiddling with the OCaml Type System
- XEN – OCaml Best Practices for Developers
-
Large Source Code Examples
- frama-c - platform dedicated to the analysis of source code written in C
- WHY3 - platform for deductive program verification
- pfff - 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.
-
Logging
-
Machine Learning
- Deep Learning with OCaml (PyTorch bindings)
- Transfer Learning with OCaml (PyTorch bindings)
- Reinforcement Learning with OCaml (PyTorch bindings)
- Owl - Scientific library with neural networks, algorithmic differentiation and ONNX support.
- Ocaml-NN - Fully functional monadic implementation of a Neural Network (FCNNs) in 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!
- MetaOCaml - stage programming.
- camlp5 - Camlp5 is a preprocessor-pretty-printer of OCaml.
- camlp4 - Camlp4 is part of the standard OCaml distribution and is different from Camlp5.
- ppx_deriving_yojson
- MetaOCaml - stage programming.
- camlp4 - Camlp4 is part of the standard OCaml distribution and is different from Camlp5.
- Reading Camlp4 – Ambassador to the Computers
-
Mobile Applications
-
Online Courses
- Introduction to Functional Programming in OCaml
- Cornell University – Data Structures and Functional Programming
- Princeton University - Functional programming in OCaml
- University of Illinois - Course that uses OCaml to teach functional programming and programming language design
- Introduction to Functional Programming in OCaml
- Princeton University - Functional programming in OCaml
- OCaml MOOC: Introduction to Functional Programming in OCaml - Videos available in [this playlist](https://www.youtube.com/playlist?list=PLTBEN441uEY36t5CCrJkdTSv588d3nWN5) of the [OCaml Software Foundation](https://ocaml-sf.org/) YouTube channel.
-
Package Management
- OPAM - friendly package manager with multiple compiler support.
- ocamlfind
- OCaml for Windows - opam repository and experimental build for Windows (deprecated since 2021).
- OPAM - friendly package manager with multiple compiler support.
- Oasis - A tool to integrate a configure, build and install system in your OCaml project. It helps to create standard entry points in your build system and allows external tools to analyse your project easily.
-
Parallelism
-
Printers helpers
-
Questions
- OCaml polymorphism example other than template function?
- OCaml - polymorphic print and type losing
- obandit - OCaml library for multi-armed bandits.
- WHIZARD - A system designed for the efficient calculation of multi-particle scattering cross sections and simulated event samples.
- oml - OCaml library for general numerical work.
-
Security and Cryptography
-
Serialization
-
System Programming
-
Testing
-
Web Development
- Ocsigen Eliom - featured multi-tier framework, for developing multi-platform Web and mobile apps as 100% OCaml distributed applications. It can also be used for more traditional Web or mobile apps: Web sites, single page applications, REST API, etc.
- fmlib_browser - a library which helps to write web applications which run in the browser in a pure functional style.
- Nethtml
- Netasn1
- Netencoding
- Netmime
- tyxml
- js_of_ocaml
- ReScript - ReScript is a robustly typed language that compiles to efficient and human-readable JavaScript.
- Lambda Soup - Functional HTML scraping and manipulation with CSS selectors, à la Python's Beautiful Soup.
- more awesomeness
- tyxml
- js_of_ocaml
- Lambda Soup - Functional HTML scraping and manipulation with CSS selectors, à la Python's Beautiful Soup.
- Ocamlnet
-
Videos
- OCaml Programming: Correct + Efficient + Beautiful - List of 200 bite-sized videos recorded by Michael R. Clarkson. It can be watched independently of the textbook titled the same and listed above in [Books section](#books).
-
Utilities
- Uuidm - Uuidm is an OCaml module implementing 128-bit universally unique identifiers version 3, 5 (name based with MD5, SHA-1 hashing) and 4 (random based) according to RFC 4122.
Categories
Compilers and Compiler Tools
23
General
17
Developer Tools
15
Web Development
15
Databases
11
Algorithms and Data Structures
11
Metaprogramming
10
Books
10
Exercises and Short Examples
9
Language-related
8
Concurrency
8
Community
8
Application Libraries
7
Online Courses
7
Formal Software Verification
6
Testing
6
Serialization
5
Blogs
5
Questions
5
Machine Learning
5
Datetime
5
Graphics
5
Package Management
5
Printers helpers
4
Parallelism
4
Code Analysis and Linters
4
Large Source Code Examples
3
User Interface
3
System Programming
2
Mobile Applications
2
Logging
2
Benchmarking
1
Videos
1
Utilities
1
Security and Cryptography
1
Sub Categories
Keywords
ocaml
5
diff
2
static-analysis
2
programming-language
2
queue
1
gadt
1
zlib
1
lz77
1
inflate
1
huffman
1
deflate
1
decompression
1
compression
1
data-structures
1
algorithms
1
reasonml
1
reason
1
javascript
1
static-code-analysis
1
objective-c
1
java
1
cpp
1
code-quality
1
c
1
symbolic-execution
1
supercompiler
1
program-analysis
1
performance
1
optimization
1
language
1
intermediate-representation
1
functional-programming
1
functional
1
compiler
1
visual
1
testing-tool
1
snapshot
1
pixel-perfect
1
odiff
1
image-comparison
1
raft-consensus-algorithm
1
raft
1
consensus-algorithm
1
rabin
1
patch
1
git
1
fingerprint
1