[Yog] スクリプト言語Yogリビジョン181公開

Yogとは、なんですか?

Yogは、開発中のスクリプト言語です。以下の特徴を持っています。

  • 関数の仮引数に式を記述できます。この式は、関数を実行するための事前条件となります。
  • 関数を|演算子で結合して、新しい関数を作成することができます。この関数を呼び出した場合、事前条件に合致するものが前から順に探され、合致したものが自動的に選択されて実行されます。

例えば、フィボナッチ数を計算するスクリプトを、以下のように記述することができます。

def f0(0)
        1
end

def f1(1)
        1
end

def fn(n)
        callee()(n - 1) + callee()(n - 2)
end

print((f0 | f1 | fn)(25))

ダウンロード

以下のURLからダウンロードできます。

コンパイル

Yogのコンパイルには、Pythonが必要です。

ダウンロードしたファイルを展開したら、まずBoehmGCをconfigureします。

$ cd gc
$ ./configure --disable-threads

次に、上のディレクトリに戻って、Yogをmakeします。

$ cd ..
$ make

機能

Yogは生まれたばかりの言語です。以下の簡単な機能しか備わっていません。

  • 整数の加算と減算
  • 関数定義と関数呼び出し
  • 関数の|演算
  • 以下の組み込み関数
名前 機能
print 引数を表示します。
callee 呼び出された関数を返します。「呼び出された関数」とは、最後に()をつけて呼び出された関数です。上のフィボナッチ数の例で、callee関数はfn内で使用されていますが、これは(f0 | f1 | fn)全体を指します。この中から、事前条件にあうものを自動的に探して呼び出します。つまり、引数が0の場合はf0, 1の場合はf1が呼び出されます(なので、フィボナッチ数を計算できるのです)。

いまはまだ、上のフィボナッチ数を計算するくらいのことしかできません。