Jeffrey M. Barber

Tombstone

crml

May 2003 · age 21

What it was

A small declarative rule language written in OCaml in eight days for a programming-languages course. A program listed starting facts, their type signatures, and rules of the form "when these facts match and these guards hold, create these facts." The engine ran every rule against the fact database, added what was new, and repeated until nothing changed. Patterns could bind records and even invert arithmetic, so matching x+1 against 7 bound x to 6. A type inferencer with its own unifier checked the whole program before it ran. The showpiece was Conway's Game of Life written as a single rule over a nine-cell neighborhood, with generations as a field in the key and the engine's fixpoint as the simulation. It parsed, type-checked, ran and rendered, and stopped the day it was handed in.

Wins, for the age

What it taught

Genealogy

Ancestors: The Before Times in QBasic: the first tiny language, read and turned into something runnable. Descendants: Adama Language: the pull toward declarative, convergent, typed systems. Tutor: patterns and rewrite rules driven to a result. Vec4U: the next camlp4 language, eighteen months later.

Epitaph

Here lies crml. In eight days of May it reinvented Datalog, taught itself unification, and ran the Game of Life as one rule, then was printed, submitted, and set aside for twenty years.