APL
それぞれ英語ではfunctionとoperatorで、ここでは訳語は日本APL協会が配布している三枝協亮訳「APL2の紹介」のそれに従っている。APLでは、前置演算子ないし中置演算子のように使う記号列を「関数」、関数を対象として操作する高階関数の意味をもつ記号列を「作用子」という。高階関数をoperatorとするのは、解析学における作用素から来ており、作用子の語も「作用素」から来ている。
1957年に創案された記法は、1962年に著書 "A Programming Language" として発表された。続いて1964年にプログラミング言語処理系として実装された。1966年にはIBM System/360上のOS、OS/360上での処理系の実装の(インタラクティブ環境を含む)APL\360 が発表された。
APLはタイムシェアリングシステムで利用できる対話型インタプリタのある言語として注目を集めた。しかしながら、FORTRANほどに普及することはなかった。
マイクロコンピュータからホームコンピュータ(英語版)の時代にはCP/M(CP/M80)上に構築した APL\80 があり、端末によってはAPL記号を扱うことが可能であった。
1976年にビル・ゲイツが書いた「ホビイストたちへの公開状」には、ゲイツがIntel 8080やMC6800向けのAPLを作成中だが、完成しても違法コピーされるためホビイストには提供できないと書かれている。しかし、結局完成はしなかった。
日本では、日本IBMからの販売の他、1980年代に株式会社アンペールからノート型のAPLマシン"WS-1"が発売された。
APLを発展させた言語に、Jがある。主な変更点の1つに、ASCIIだけで表記するようにした点が挙げられる。
ここでは、「内積」と「外積」と呼ばれる作用子を例として紹介する。これは、積 (および和) を演算子としてとり、それによって定義される内積と直積 (ベクトル) (outer product) を計算する演算子を返す作用子と解釈できる。
内積の作用子の記号は "." であり、
とすることで、二つの関数を以下で説明するように合成する。例えば、
とした場合、まず後の関数(この場合は ×)を各要素毎に適用し、
となる。この結果の要素間に、前の関数(ここでは +)を入れた計算である、 9×6 + 8×5 + 7×4 が全体の意味であり、評価すると得られる値は 122 である。なお、右から左のルールがここでは、(9×6) + ((8×5) + (7×4)) のように効くことに注意する。
この例のように、2個の1次元配列に対し . を +.× のように使うと、ベクトルの内積の計算となり、同様に +.× を2次元配列に対し使うと行列積となるが、これに限らず . は他の関数とも組み合わせて使うことができる。
外積の作用子の記号列は "∘." であり( "∘" と前述した内積との組み合わせではない)、
とすると、配列に対して以下で説明するように関数を適用する。例えば、
とした場合、
という計算が行われ
という2次元の配列を返す。