Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/johnyob/dromedary
Dromedary is an experimental subset of OCaml, using constraint-based type inference!
https://github.com/johnyob/dromedary
Last synced: 3 months ago
JSON representation
Dromedary is an experimental subset of OCaml, using constraint-based type inference!
- Host: GitHub
- URL: https://github.com/johnyob/dromedary
- Owner: johnyob
- License: mit
- Created: 2021-10-15T17:05:18.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-04-26T15:46:30.000Z (7 months ago)
- Last Synced: 2024-05-31T10:41:05.751Z (6 months ago)
- Language: OCaml
- Size: 2.11 MB
- Stars: 44
- Watchers: 3
- Forks: 2
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🐪 Dromedary
> An experimental subset of OCaml, using constraint-based type inference![![CircleCI](https://circleci.com/gh/johnyob/dromedary/tree/main.svg?style=svg)](https://circleci.com/gh/johnyob/dromedary/tree/main)
[![Coverage Status](https://coveralls.io/repos/github/johnyob/dromedary/badge.svg?branch=main)](https://coveralls.io/github/johnyob/dromedary?branch=main)## What is Dromedary?
Dromedary is a work-in-progress implementation of a constraint-based type checker for a large subset of OCaml. It is largely based on the work of François Pottier's [Hindley-Milner elaboration in an applictive style](http://gallium.inria.fr/~fpottier/publis/fpottier-elaboration.pdf) and the constraint language presented in [The Essence of ML Type Inference](http://pauillac.inria.fr/~fpottier/publis/emlti-final.pdf).
## Features
Dromedary implements *significantly* more features than the language presented in Pottier's [paper](http://gallium.inria.fr/~fpottier/publis/fpottier-elaboration.pdf), including:
- Algebraic data types and pattern matching
- Mutually recursive let bindings
- Side-effecting primitives and the value restriction
- GADTs
- Polymorphic variants
- Semi-explicit first-class polymorphism (record fields only)
- Type abbreviations
- StructuresFor a description of the thoery of these extensions in a constraint-based setting, see the [accompanying dissertation](dissertation/main.pdf).
## Installation
Dromedary is written in OCaml. You'll need to install OCaml version 4.12.0 and `opam`.
Once installed, run these commands to get started!
```
make install
make build
```