リファレンス
組み込みノード

組み込みノード

n 項演算子 (1 以上の n に対応)

n 項演算子として、 + * ++ && || が用意されています。

++ は配列や文字列を連結する演算子です。

すべての入力に値が流れて初めて出力をします。

中置演算子として書くこともできます。この場合は 2 項演算子となります。

2 項演算子

- / % == != >= <= > < が用意されています。

すべての入力に値が流れて初めて出力をします。

中置演算子として利用できます。

その他のノード

not

入力を否定したブール値を出力します。

入力: arg0: ブール値。出力: result: ブール値。

output

受け取ったデータを画面に出力します。出力後、ユーザーが何も入力せず Enter キーを押すまでプログラムは中断します。何か入力して Enter キーが押されるとプログラムは終了します。

入力: arg0: 画面に出力するデータ。出力: なし。

trace

output と似ていますが、ユーザーによるプログラムの再開後、下流ノードにデータを流します(つまり、副作用ありの恒等関数の役割)。

入力: arg0: 画面に出力するデータ。出力: result: arg0 で受け取ったデータ。

input

入力に値が流れてきたとき、ユーザーからの入力を待ちます。受け取ったユーザーからの入力を下流へ文字列として流します。

入力: request: ユーザーから入力を受け取ることを示すフラグとしてデータを用いる。出力 result: ユーザーから受け取った入力(文字列)。

例: 入力を数値として受け取りたい場合は、 input を使った後 int を用います。

以下の例は、ユーザーから受け取った数値に 1 を足して画面に出力します。出力後再びユーザーからの入力を受け取るので、 @ainput の上流に戻しています。

flow ver 0.2.0
> @a'1 -> input -> int -> + 1 -> trace -> @a
Input: 1
2
Input: 2
3
Input: 4
5.
terminated

merge

上流のデータを 1 つ下流に流します。飢餓(Starvation)の上流ノードは生じないことが保証されます。

入力: arg0 arg1 ... arg(n-1)。出力: result

copy

上流のデータを下流すべてに流します。(コピーを実施するためには、すべての出力が ready である必要があります。)

入力: arg0。出力: copy0 copy1 ... copy(n-1)

if

分岐を行います。conditionTrue なら出力 then に、それ以外なら出力 else にデータを流します。 流すデータは、入力 value が使用されている場合は value から流れてきた値が、使用されていない場合は cond から流れてきた値が流れます。

なお、入力 value が使用されている場合は、入力 condition value の両方がそろうまで下流にデータを流すのを待機します。

入力: condition, value (optional)。出力: then, else (optional)。

id

1 変数の恒等関数です。

入力: arg0。出力: result

exit

データが流れてきた場合、プログラムを終了します。

入力: arg0。出力: なし。

map

配列を受け取り、要素を 1 つずつ下流に流します。 (最後の要素の後、配列の最後を表す EOF のようなものを下流に流します。)

入力: arg0: 配列。出力: result: 要素。

unmap

要素を受け取っていき、 map 由来の EOF のようなものを受け取ったタイミングで配列化して出力します。

入力: arg0: 要素と EOF のようなもの。出力: result: 配列。

pair

2 つの入力を受け取り、ペアを形成します。

2 つの入力がそろうまで待機します。

入力: fst snd。出力: result: ペア。

unpair

ペアを受け取り、1 つ目の要素と 2 つ目の要素を出力します。

入力: arg0: ペア。出力: fst snd

int

上流を数値に変換します。

文字列はパースします。真偽値は True が 1、False が 0 です。その他の値はエラーとなります。

入力: arg0: 数値に変換したい値。出力: result: 変換された数値

str

上流を文字列に変換します。

入力: arg0: 文字列に変換したい値。出力: result: 変換された文字列

bool

上流を真偽値に変換します。

空文字列、 0False[] のみが False となり、それ以外は True となります。

入力: arg0: 真偽値に変換したい値。出力: result: 変換された真偽値