制御構文#
Xarpiteには多くのプログラミング言語に登場する「if文」や「while文」と全く同一の文法はありません。
代わりに演算子と関数を使って同様な制御を行います。
制御演算子#
条件分岐#
論理和演算子、論理積演算子、三項演算子は条件分岐に利用できます。
詳細は論理値を参照してください。
ループ#
パイプ演算子を使うとループを表現できます。
詳細はストリームを参照してください。
ラベルとリターン#
ラベル演算子とリターン演算子を使うと任意の場所から抜け出すことができます。
詳細はジャンプを参照してください。
例外機構#
スロー演算子とキャッチ演算子を使うと値をスローし、キャッチできます。
詳細はジャンプを参照してください。
制御関数#
WHILE: 条件ループ#
WHILE(condition: () -> BOOLEAN; block: () -> VALUE): NULL
condition が TRUE を返す間、 block を繰り返し実行します。
この関数はよくある「while文」の再現です。
この関数は副作用のあるブロックの制御を目的としているため、敢えて block の戻り値を破棄します。
$ xa '
i := 0
WHILE [ => i < 5 ] ( =>
OUT << i
i = i + 1
)
'
# 0
# 1
# 2
# 3
# 4
# NULL
ラベル・リターン演算子と組み合わせることでループの途中で脱出することもできます。
$ xa '
i := 0
WHILE [ => i < 5 ] ( =>
i == 3 && break!!
OUT << i
i = i + 1
) !: break
'
# 0
# 1
# 2
# NULL
block がストリームを返す場合、ストリームを解決し、その結果を破棄します。
このため block の副作用は必ず丁度1回だけ発生します。
$ xa -q '
i := 0
WHILE [ => i < 4 ] ( =>
0 ~ 2 | (
OUT << i
i = i + 1
)
)
NULL
'
# 0
# 1
# 2
# 3