制御構造

APL/J言語に限らずというかほかの言語の方がちゃんとしているのかもしれませんが、if〜then〜elseとか、whileとか、ifとかは制御構造(Control Structures)と呼ばれます。なぜ制御構造(コントロールストラクチャー)なのかと考えてみると手続き型言語では流れ(フロー)があってその流れをねじ曲げたり、戻したり、飛ばしたりコントロールするからだと思ういます。APL/J言語では流れというイメージよりも全体を俯瞰して全体になにかを作用させる風に頭を使いますので、他の言語より制御構造の位置づけが若干低く感じますが、それでも大切な概念です。

制御単語は明示的定義:(コロン)において用いられ実行のシークエンスを変化させます。対応する制御単語とそれらに囲まれた文が制御構造を形づくります。以下の制御単語と構造が使えます。

assert. T
break.
continue.
for.     T do. B end.
for_xyz. T do. B end.
goto_name.
label_name.
if. T do. B end.
if. T do. B else. B1 end.
if.     T  do. B
elseif. T1 do. B1
elseif. T2 do. B2
end.
return.
select. T
 case.  T0 do. B0
 fcase. T1 do. B1
 case.  T2 do. B2
end.
throw.
try. B catch. B1 catchd. B2 catcht. B3 end.
while.  T do. B end.
whilst. T do. B end.

BとかTは一つもしくはいくつかの文および制御構造からなるブロックを示します。上記の最後の分はTブロックが実行された結果、主要アトムの真偽によってがその中のBブロックが実行されるかどうかを決めます。(Tブロックが空の場合もしくは省略された場合はTブロックテストは真です。)最終的な結果はTブロックにない文で最後に実行された文の結果です。もしそのような文がない場合、最終結果はi.0 0です。

それぞれの単語の意味用法は別途。