ML
  • OCaml 98.8%
  • Emacs Lisp 0.6%
  • Nix 0.4%
  • Standard ML 0.1%
  • Dune 0.1%
Find a file
2026-06-01 09:11:45 +02:00
bin clean up compiler pass interface 2026-06-01 09:11:45 +02:00
docs move design docs 2026-05-31 16:08:24 +02:00
emacs type defintions 2026-05-30 23:08:29 +02:00
examples nice error messages for name resolution and type errors 2026-05-31 18:46:10 +02:00
lib clean up compiler pass interface 2026-06-01 09:11:45 +02:00
test clean up compiler pass interface 2026-06-01 09:11:45 +02:00
.envrc direnv for zed integration 2026-04-21 21:04:07 +02:00
.gitignore simple tuple projection 2026-05-27 18:43:46 +02:00
.ocamlformat ocamlformat 2026-05-03 15:51:58 +02:00
CLAUDE.md clean up compiler pass interface 2026-06-01 09:11:45 +02:00
dune-project clean up dependencies 2026-05-04 23:24:04 +02:00
flake.lock dune scaffolding 2026-04-21 20:28:11 +02:00
flake.nix clean up dependencies 2026-05-04 23:24:04 +02:00
README.md clean up compiler pass interface 2026-06-01 09:11:45 +02:00

Amelie

Idea

  • Modular design (ml modules) but one translation unit (monomorphization)
    • can module be a kind, and vtables the value representation of module types?
  • Inferred types with optional annotations
  • Pascal/ML hybrid syntax
  • Arity part of function identity

TODO LIST

  • doc comments that are part of the ast

Type system

  • ghetto row poly for tuple generalization
  • kind checking pass to catch kind errors with a better error isntead of failing unification
  • specialized unify nat error

Design

Amelie is a functional language in the style of ML, in the sense that it is designed to be modular, but takes some inspiration from Rust, by for example not making functions curried.

AI

Claude Code has been used extensively as a sparring partner, and for generating the most tedious parts of the code, like the parser.

The core of the semantic analysis is based on a prior artisanal imlementation ™️ of the paper "Algorithm W Step by Step" by Martin Grabmüller by myself.

The project has now taken on a sort of personal experiment of pushing vibe coding to the limit of what I'm comfortable with.