- 2006-11-02 (Thu) 18:32
- プログラミング
折角APLというものの存在を知ったので,その発展である J を少し使えるようになろうかと考えた.J の実行環境としては JSoftwareからインタプリタがダウンロード可能.JAPLA のシンポジウムの資料を見つつ簡単なところからやってみる.
とりあえず,配列の定義. i. という動詞(関数)で 0 から n-1 の要素を持つ長さ n の配列を作る.代入は =: ないし =. とのことで,値の出力は ] とのこと.
] D=: i.8 0 1 2 3 4 5 6 7
すでに分かりにくい.
ついで,reduction に手を出してみる.正確には insertion とか言うらしいが… BMF の reduce と同じで左にオペレータを取って配列をぶっ潰す.和を求めるのも簡単.
sum =: +/ ] sum D 28
これはまだ分かりやすい.
次に訳の分からん(気がする)動詞の fork 合成を試す.fork は3つの動詞からなり, f g h という fork に引数 x を適用すると (f x) g (h x) とかになるらしい.こんなのどこに使えばいいか良くわからんが,とりあえず平均がこれで書ける.# は要素数を返す演算子で % は割り算(剰余ではないらしい)の演算子.
mean =: +/%# ] mean D 3.5
うーん,微妙に気持ち悪い気がしなくも無い.Lisp の括弧だらけの式を読むのと APL ないし J の式を読むのとどっちが面倒なんだか…
- Newer: AWK - はじめ