by Justin Collins
This project appears to have gone dormant. It will be removed from the list soon unless new activity is noted.
Little language for people who don't like to be told what to do.

Brat is a little toy language that just doesn't care.

Brat code is compiled to Lua and runs on LuaJIT.

Brat is flexible enough that you can get by with a very small core and write any functionality that most languages use keywords for.


  • Typeless, and pretty much classless
  • Everything is object, except functions
  • And functions are closures, which can be attached to objects to make methods
  • Objects use a prototyping system and are completely open
  • Very flexible unary and binary operators
  • Tail calls are optimized to make infinite loops faster (and more infinite)
  • Optimized for LuaJIT tracing
  Create a function which works like: compose(f, g) (x) = f(g(x))

compose = { f, g | { x | f g x } }

#Test it out
add1 = { x | x + 1 }
double = { x | x * 2 }
b = compose(->double ->add1)

p b 1 #should print 4
Information updated 01/15/22
View Comments