APL/J言語:二次的動詞

以下は書きかけです。

      • -

APL/J言語:二次的動詞
J言語が提供する原始動詞(プリミティブまたはプライマリー)を補強するものとして、二次的動詞(セカンダリー)というものをわかりやすい名称で提供すると便利だろう。下記の例では名称の最初は大文字にしている。

Ad=: [ 0:}-@>:@$@]{.]   NB.Append diagonal scalar 
Ai=: >:@i.   NB.Augmented integers 
Area=: [: Det ] ,. %@!@#"1   NB.Area (Vol) try Area tet=:0,=i.3 
Bc=: i. !/ i.   NB.Binomial coefficients 
Bca=: %.@Bc   NB.Binomial coefficients (alternating) 
By=: ' '&;@,.@[ ,. ]   NB.By (format; see Ta) 
Cpa=: ]%.i.@#@]^/Ei@[   NB.Coeffs of poly approx 
CPA=: (@])%.i.@#@]^/Ei@[   NB.Coeffs of poly approx (adverb) 
Det=: -/ . *   NB.Determinant 
Dpc=: 1: }. ] * i.@#   NB.Differentiate poly coeffs 
D1=: ("0)(D.1)   NB.Derivative (scalar, first) 
Ei=: i.@(+*+0&=)   NB.Extended integers 
Epc=: Bc@# X ]   NB.Expand poly coeffs 
Ipc=: 0: , ] % Ai@#   NB.Integrate poly coeffs 
Inv=: ^:_1   NB.Inverse 
Id=: =@i.   NB.Identity matrix 
Mat=: -: /:~   NB.Monotone ascending test 
Mdt=: -: \:~   NB.Monotone descending test 
Mrg=: +&$ {. ,@(|:@,:)   NB.Merge 
Over=:   ({.;}.)@":@,   NB.Over (format; see Ta) 
Pad=: 2 : 'x%.]^/Ei@(y"_)'   NB.Polynomial approx of degree 
Pp=: +//.@(*/)   NB.Polynomial coeffs product 
Si=: (Ei@+: - |) : (-/ i.)   NB.Symmetric and subsiding int 
Span=: 2 : 'y"_ x\ ]'   NB.Span of apply of left arg 
S1=: |:@|@(^!._1/~%.^/~)@i.   NB.Stirling numbers (1st kind) 
S2=: |:@ (^/~%.^!._1/~)@i.   NB.Stirling numbers (2nd kind) 
Ta=: 1 : '[By]Over x/'   NB.Table adverb 
Thr=: ] * 0.1&^@[ 

演習
28.1 上記の例を入力し、下記の表現を実行せよ。

   (Ai 2 3);(Ai 2 _3);(Ei 2 3);(Ei 2 _3)
   (i.;i.@-;Ai;Ai@-;Ei;Ei@-) 4
   (Si 4);(7 4 Si 4)
   +Ta~@i. 4
   (S1;S2) 7
   (];X/;%/;%./;(%./%{.)) y=: (Bc ,: Bca) 5
   (0 1&Cb;1 _1&Cb) i. 2 3 4

28.2 さらに実験を行え。