関数の定義


西川利男の本でAPLのユーザ定義関数作成の例がありました。

   ▽TEST1 X
   'TOTAL:'
   +/x
   'AVERAGE:'
   (+/X)÷(ρX)
   ▽

これをこのままではJ言語では動きませんでした。とりあえず動くものを作ったのが下記のリストです。

    test1 =: 3 : 0
 2 2 $ 'total'; (+/y) ; 'average'; ((+/%#)y)
 )
    test1 i.10
 +-------+---+
 |total  |45 |
 +-------+---+
 |average|4.5|
 +-------+---+

J言語では動詞(関数)の定義をするのに、=: 3 : 0というのを使います。これを=: verb define というように書くこともできるようですが、あまり奨励されていません。
APLでは関数中に書いた文字列や数式の結果は順次プリントアウトされますが、J言語では最後の行しか返されませんので、一つにまとめる必要があります。今回のように文字列と数字を一緒にアウトプットするにはとりあえずbox(ボックス)しか思いつきませんでした。

以上