brat-lang
オブジェクト指向で、ファーストクラスの関数とほとんど構文がない。
Bratは柔軟性に富んでいるので、非常に小さなコアで、ほとんどの言語がキーワードを使うような機能を書くことができる。例えば、whileループを次のように書いて使うことができる
code:while.brat
# Loops until the block returns false
while = { block |
true? block, { while ->block }
}
# Print 1 through 9
n = 1
while {
p n
n = n + 1
n < 10
}
条件部を分けたい場合は、代わりにこのように定義することもできる
code:while2.brat
# Loops until condition is false
while = { condition, block |
true? condition, { block; while ->condition, ->block }
}
n = 1
while { n < 10 } { p n; n = n + 1 }
特徴
動的型付け
関数以外はすべてオブジェクト
関数はクロージャであり、オブジェクトにアタッチしてメソッドを作ることができる。
オブジェクトはプロトタイピング・システムを使用し、完全にオープンである。
組み込みのハッシュ・テーブルと動的配列
非常に柔軟な単項演算子と二項演算子
末尾呼び出しが最適化され、無限ループがより速く(より無限に)なる
構文をほとんど持たず、whileとか普通の言語ならビルトインのキーワードとして提供されている機能を自分で定義したりできる。