Skip to content

記法

Tuber は 2 種類の異なる記法をサポートしています。一つは ECMAScript 風のスタイル、もう一つは Lazy_K 風のスタイルです。

Tuber にコマンドを与えるときいずれのスタイルで式を書いても構いません。記法によって式の意味が変わることはありません。
コマンド実行の度に別のスタイルで式を書くことさえ許されます。ただし一つの式の中で異なるスタイルを混ぜることはできません。

ECMAScript スタイルの例

ECMAScript スタイルではアロー関数でラムダ抽象を表現し、関数呼び出しで式の適用を表現します。

k = x => y => x
k(a)(b) # → a

Tuber には 1 変数のラムダ抽象しかありませんが、あたかも多変数関数のようにラムダ抽象を書くことが可能です。
多変数のラムダ抽象, 多変数の関数適用は自動的にカリー化されます。

# 多変数で書くことも可能
k = (x, y) => x
k(a, b) # → a

Lazy_K スタイルの例

Lazy_K スタイルではバッククォート ` を使って関数適用を表現します。

k = ^x.^y.x
``kxy # → x

ラムダ抽象のみ多変数で書くことが許されます。

k = ^xy.x
``kxy # → x