Elixir,LFE,Erlogを試してみた

Elixir

 構文がErlangとあまりにもかけ離れているので覚えることが多そうで敬遠していたんだけど、全然そんなことなかった。もちろんElixir専用のライブラリを使えばいろいろいいことがあるんだろうけど、Erlangのライブラリの知識を使って作ることもできる。

 Elixirに謎の,とかdoとかがあるのは全部式にするためとか、ブロックを明確にするため。全部式にしてあるからマクロが簡単に適用できる。この徹底の仕方は非常にLispっぽいと思う。コンパイルして既存のErlangのプログラムと容易に混在できる。

Lisp Flavored Erlang

 これはLispそのまま。ちゃんとコンパイルして、これも既存のErlangのプログラムと混在できる。もちろんElixirとも。

Erlog

 これはPrologなんだが、まだ動かし方がわからない。コンパイルはさずがにできないようだ。

ErlangEOS

 iErlangと、構文をErlangから大幅に変えるErlangEOSの2つの言語に軌道修正した。

 これらにLisp的なマクロを適用できないかといろいろ考えてみたんだけど、Lisp的なマクロを適用するためには、例えば関数定義にはdef とか前につける必要がある。

 ブロックがある部分を明確に指示しなければならない。Erlangでは->の後は必ずブロックになるんだな。今気が付いた。Elixirではdoがブロックを表している。

 Lisp的なマクロを使えるようにいろいろ考えると、Elixirの構文に行き着く。Elixirの構文は必然なのだ。

 いろいろ考えてみたけど、俺が欲しかったのってIOだったんだなって気がしてきた。俺が好きなML系言語、IO言語、あんまりモテなそうだけど、一部には好かれるかもしれない。ま、俺が好きだから作るよ。

 ErlangVMでは.netやJavaより遥かに自由に言語の混在ができている印象がある。Erlang動的言語だからかな。簡単に混在ができるから用途に合わせて好きな言語で作ればいいんじゃないだろうか。どんどんErlangが盛り上がるといいな。