// the take
Caramel is a small Haskell-written front-end that lets you write Lambda Calculus programs in a Haskell-like syntax (lambdas, let/where, numbers, lists, tuples, ADTs) and compiles that sugar down to raw untyped lambda terms, with transpilers ('transmogrifiers') from those terms to JS, Python, Ruby, Lua, Scheme, Haskell and Binary Lambda Calculus. It's aimed at people studying or teaching the untyped lambda calculus, not at anyone trying to ship software.
The core is genuinely tiny (author claims ~350 lines of Haskell) and the expansion/contraction is bidirectional - you can go from sugar to de Bruijn-indexed lambda terms and back, which is a nice property for a teaching tool. The transmogrifier trick of emitting the same semantics as working JS/Python/Ruby/Lua/Scheme/Haskell snippets is a clever, concrete way to show that lambda-calculus encodings of numbers, booleans, chars and tuples aren't just theory - they run. The Scott-encoded ADT system with derivers (Ctor, Show, Match, Getter, Fold) is an interesting attempt to get Haskell-like data types without any native language support for them.
Dead project - last push June 2016, single contributor, no activity since; don't expect bug fixes or help if you get stuck. There's no type system at all and the author says so explicitly ('this has nothing to do with types or typechecking'), so the ADT layer gives you data-type syntax with zero safety net. The ADT/deriver mechanism is marked experimental by the author himself, who admits the design is 'likely imperfect' - this isn't false modesty, it's a warning that the API will probably change or just doesn't work well in all cases. Everything ultimately runs as beta reduction over church/scott-encoded terms, which is fine for toy examples like qsort on a handful of numbers but has no story for performance, IO, or anything resembling a real program.
We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →