MTASC作者による新たな言語 - haXe
MTASC作者が作った言語。ライセンスはGPL。ECMAScriptを発展させたActionScript2から発達させたような言語。文法はActionScriptっぽくても、中身は静的型チェックする関数型言語のようになっている。大きな特徴は、
現時点ではベータ版があり、Flash環境(flash...パッケージが利用可能)とWebサーバ環境(nekoパッケージが利用可能)が用意されている。JavaScript環境も用意するようだ。DOMは基本パッケージに含んでいる。
haXeサンプルコード
以下のような感じでパターンマッチングとしてenumとswitchが使えてしまうのです。
Text.hx
class Test { static function main() { var exp: Exp = mul(num(5), plus(num(3), num(4))); trace(evalExp(exp)); } static function evalExp(e: Exp): Int { return switch (e) { case num(n): n; case plus(e1, e2): evalExp(e1) + evalExp(e2); case mul(e1, e2): evalExp(e1) * evalExp(e2); }; } } enum Exp { num(n: Int); plus(e1: Exp, e2: Exp); mul(e1: Exp, e2: Exp); }
Enumの中にstatic関数かけるとよさそうだけど、それはできない。
swf変換はmtascと同じく:
haxe -swf Test.swf -main Test
GADTのようなこともできるのだろうか(できないようだ。enum中でのパラメータ型変数の導入ができなかった)。