以下は書きかけです。
-
-
- -
-
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 さらに実験を行え。