【自作関数型プログラミング言語TFL】関数型言語作りました

以下の内容は古くなっています。
自作言語TFLについての最新の情報はこちらから参照してください。

しばらく更新が止まっていました。

先日ふと思い立って、Javaを使って簡単な関数型言語インタプリタを作り始めたのですが、実際に始めてみるとこれが意外と難しく、なかなか思ったように動くようにならなくて、最初遅くても2〜3日の予定だったのが3週間近くかかってしまいました・・・
取り急ぎ、ひと通り最低限の計算はこなせるようになったので、こちらで公開します。

最初に断っておきますが、開発言語がJavaな事や、とにかく実装する事を優先した関係でかなり処理速度やメモリ使用率には問題があると思います。
簡約は再帰処理で実装しているため、スタックはすぐに溢れてしまうので、扱えるリストの長さはせいぜい300〜400程度だと思ってください。
実用性はほとんど無いです。

あとそれから、今のところまだ文字列や入出力はできていないので、ちょっとした演算やリスト処理が程度しかできません。おなじみの"Hello,World!"も作れないです。
これらは近いうちに実装するつもりなので、最終的にはちょっとしたノベルゲームやFizzBuzzくらいならできるようになると思います。

言語には、おもちゃみたいに簡単な作りの関数型言語という意味で、TFL(Toy Functional Language)という名前を付けました。
以下でUbuntu10.4での使用方法を説明しますが、Linux系OSならほとんど同じかと思われます。
Windowsの場合も、通常のjarファイルをコマンドラインから実行するだけですので、そんなに難しい事は無いでしょう。

以下のアップローダーからZIPファイルをダウンロードして展開します。
http://ux.getuploader.com/ToyFunctionalLanguage/download/1/TFL.zip
もし解凍がうまくいかない場合は、解凍したものをバラでもアップロードしてありますので、以下を参考にしてください。
http://ux.getuploader.com/ToyFunctionalLanguage/

Zipファイルを解凍すると以下のファイルが生成されます。

  • tfl.jar : これが実行ファイルになります
  • default.tfl : 標準的な関数をまとめたライブラリです、まだ全然足りてませんが・・・
  • sample.tfl : サンプルスクリプトです、フィボナッチ数列のリストを作成します

まず、端末を開き、解凍したディレクトリに移動したら、jarファイルに実行属性を付加します。

$ chmod +x tfl.jar

次に、以下のようにサンプルスクリプトを実行すると、フィボナッチ数列が表示されます。

$ ./tfl.jar sample.tfl
[0.0, 1.0, 1.0, 2.0, 3.0, 5.0, 8.0, 13.0, 21.0, 34.0, 55.0, 89.0, 144.0, 233.0, 377.0, 610.0, 987.0, 1597.0, 2584.0, 4181.0, 6765.0, 10946.0, 17711.0, 28657.0, 46368.0, 75025.0, 121393.0, 196418.0, 317811.0, 514229.0, 832040.0]

引数に"-i"を指定すると、対話モードで実行できます。
この時、ライブラリの関数を使いたい場合は、一緒にファイル名を指定します。
終了時は「exit」とタイプしてください。

$ ./tfl.jar -i default.tfl
Load sclipt complete - default.tfl
> join [1,2,3] [5,6,7]
[1.0, 2.0, 3.0, 5.0, 6.0, 7.0]
> +[100,10,1]
111.0
> exit
$