APL 言語の特徴を挙げると
グラフィックス機能と数式処理機能はありませんが,ベクトルや行列の演 算に関しては十分 Mathematica の代わりになると思います.また,バイ ナリのサイズが小さいので,FD ベースで動かすような小規模システムで も使えると言う利点があります.
APL\11 にはまだバグがいたりするようですが,解説書の例題を試す程度 では一度もバグに当たりませんでした.結構安定しているのではないかと 思います.UNIX のキャラクター端末で動くようになってますので,特殊 なフォントは必要ありませんが,演算子に ^H (back space キー)が使わ れていたりするので,端末設定をちゃんとやらないと使えない演算子がで てきます (^^;)
PC への移植の可能性ですが,ポインターと整数をごっちゃに使っている 部分があるようで,ポインタと整数のビット長の違う CPU への移植は面 倒だと思います.SunOS と NEWS-OS でコンパイルした場合は,ちょっと した修正だけで済みました.ただ,コンパイル時にポインター回りで warning が大量に出ます.SGI の IRIX 6.3 では動作しませんでした.
あと,何故か行列式を計算する演算子が APL にはなかったので練習がて
ら作ってみましたので,それを付けておきます. APL の雰囲気だけです
が,味わっていただけるのではないでしょうか :-)
# もっと良い作り方があると思いますが (^^;)
## 任意の大きさの行列の行列式が計算できます.
---
r{det m;i;e;a;b
}(2#RRm)/0,r{'array size error'
}(#/Rm)/0,r{'dimension error'
e{1YRm
a{eR0
}(1=e)/0,r{m[1;1]
i{1
loop: b{Ie
b[1,i]{ i,1
a[i]{det 1 1Um[;b]
}(e&i{i+1)/loop
r{+/m[1;]XaXeR1-`1U0,eR2
---
その後,改良版を作りました :-)
---
r{det m;i;e;a;b
}(2#RRm)/0,r{'array size error'
}(#/Rm)/0,r{'dimension error'
e{1YRm
a{eR0
}(1=e)/0,r{m[1;1]
i{1
b{Ie
loop: b[1,i]{ b[i,1]
a[i]{det 1 1Um[;b]
}(e&i{i+1)/loop
r{-/m[1;]Xa
---