Cambios recientes

2008-02-13

Últimos archivo liberados

tlpt-dev (1-10)2008-02-13 02:13

Wiki Guide

Sidebar

Tlpt プロジェクト Wiki

Tlpt (以下、つるぺた) のプロジェクト Wiki ページへようこそ。

つるぺたは OCaml を使って書かれたスクリプト言語です。

が、とりあえずコマンドライン計算機だと思ってください。

以下、コマンドラインでの使用例です。

  • tlpt '(1 + 10) * 100' を実行すると 1100 を表示して終了
    • 多倍長整数なので桁あふれの心配も無いです
    • アスタリスク '*' はシェルに展開されるため、式全体をシングルクォーテーションで囲っておくのが無難です
      • Windows のコマンドプロンプトはダブルクォーテーションで

つるぺたの特徴としては次のようなものがあります。

  • 無名関数定義方法が無駄に 3 種類
    • lambda(x, y -> x * y)
    • {x, y -> x * y}
    • (\x, y -> x * y)
      • map(), map2(), foldl() もあります
  • ちょっと違うような気がする curry 化
    • def f(x, y) { return x * y; } mul2 = curry(f, 2); print mul2(100);
      • curry() はカリーオブジェクトではなく、関数オブジェクトを返す
  • 勝手に名付けたキャンセラ変数 ><
    • def f(x, y) { return x + y * 1000; } plus2000 = curry(f, ><, 2); print plus2000(3);
  • 各種パーサーを持つことでつるぺたソース中に Scheme, Whitespace のソースが記述及び実行可能
    • 手続き型言語の中で関数型言語が書ける
      • 現状、scheme は 99% 未実装 (display, define, 四則演算のみ対応)
    • 人に見られたくない箇所は Whitespace で記述できる
      • そして自分でハマる ;-)
    • わりかし規模が小さい sh, C, brainfuck あたりは組み込むかも
  • ぶん回し系の each (eh), veach (veh), times
    • eh i [1,2,3] do print i;
      • 心が綺麗な人は each i:[1,2,3] do print i; と書いてください
    • veh i 1, 2, 3 do print i;
    • times 10 do print "hello";
  • 某言語のように print は関数ではなく、文扱いなので括弧不要
    • が、逆にわかりづらくしているかも
    • 関数呼び出しは丸括弧が必要です
  • プロンプトはないけれど対話形式で実行可能
    • 文の区切りは ; で C と同じですが、入力区切り ;; があり、それを読み込むとそこまでの処理が走ります
      • ;; は OCaml から拝借
  • 参考として、samples 下のソースファイルを見てください
    • 未実装のため、通らないソースもありますが・・・

とまあ、ほどほど動きますが、バリバリ使えるというわけではなく、色々実装中です。