Lil' Fun Langs
taylor.town77 points by surprisetalk 5 hours ago
77 points by surprisetalk 5 hours ago
loon is a lisp! https://github.com/ecto/loon
[type Shape
[Circle Float]
[Rect Float Float]]
[fn area [s]
[match s
[Circle r] => [* 3.14 r r]
[Rect w h] => [* w h]]]
[area [Circle 5.0]]idk how I haven't crossed a lisp with square brackets but dang I am sorta stunned at how I've never even envisioned it? thanks
My little language Newt is 7 kloc. Dunno if it's worth including, it's mostly an exercise to learn how these things work and is not as polished as I'd like.
- Self-hosted
- Compiles to javascript
- Bidirectional typechecking with NbE (based on elaboration zoo)
- Dependent type checking
- type classes
- ADTs with dependent pattern matching
- TCO (trampoline for mutually tail recursive functions)
- Erasure of compile-time only values (0, ω quantities, but not linear)
- Web playground
- LSP (added this month)
- Syntax is similar to Agda / Idris / Haskell
Fluent – 4K lines – including parser, interpreter, standard library, IDE, UI, docs, examples. Will grow though.
I'll add it! Thanks.
EDIT: Actually, it's not quite "ML-family" enough for this post. But it is a remarkably cool project! :)
If you're accepting additions here is a fun one some friends and I did as experiment at the Topos Institute: https://github.com/ToposInstitute/polytt
And here is a set of single file lambda calculus implementations with a variety of extensions: https://github.com/solomon-b/lambda-calculus-hs
`polytt` is kind of an ended experiment but that lambda calculus repo i plan to extend in the near future.
Another crazy one is SectorLISP, 223 lines of asm
The hardest part with small languages isn't the parser, it's the standard library and error messages. Getting a helpful IDE experience in that footprint is a significant engineering challenge.