定義と実行

定義と引数

後から同じ名前の名詞や動詞を定義したり、ロードした場合に オーバーラップしたときは、後の定義が局所定義の場合は影響を受けない が、大局定義の場合には以前の定義が変更され、後の方が用いられる。 (警告はない)

大きなプロジクトの場合はロケールやcoclassで区分けして整理する。

用法APL結果と例(単項) 用法結果と例(両項)
=. =: \[ \rightarrow \] Copula
(is)
連結詞
(名詞)
X =. Y
X =: Y
  • 「=.」は局所(local)定義
  • 「=:」は大局(global)定義
  • 名詞に数値や文字等を挿入
   plus=: +
   
   pm=: +,-
  
   'A B C'=: 123 256 768
[(])
Same
同等
(名詞)
定義内容を表示させる。   

] n=.i.2 3        
0 1 2            
3 4 5            
Left /Right
右引用
左引用
[は左引数を取り出す   

]は右引数を取り出す   

    2 3 [ 4 5       
 2 3            

    2 3 ] 4 5       
 4 5            
:
Monad /Dyad
単項/二項
(接続詞)
「(単項):(二項)」の形で定 義し、

左引数の有無によって 単項又は二項として演算する

log=.10&^. : ^.     

 log 10 100        
1 2             

8 log 10 100       
1.10731 2.21462       
NB.
Comment
コメント
コメント           
 
 mean=.+/%# NB.mean     
 
 mean 1 2 3 4 5       
3               

NB. その行の以降の文字は演算に関係しない 
用法APL結果と例(単項) 用法結果と例(両項)
b.
Basic Charac terristics
(動詞)
u b .n
  • u b. 0は動詞 uのラン クを表示する。
    *: b.0          
    0 0 0            
    (単項),(二項左),(二項右) 
    
  • u b. _1は動詞の逆関数を表示
    *: b._1         
    %:    (逆関数の表示) 
    
  • u b. 1はプリミティブの定義を表示
      * b. 1
    1 $~ }.@$
    
    (プリミティブの原始定義) 
    
    \end{itemize}
Boolean
f.
無し
Fix
動詞の固定
(副詞)
動詞の定義を固定し、その 後の変更の影響を排除する
   sum=. +/
  
   mean1=. sum % #
  
   mean=. mean1 f.
  
   mean >:i.5
3
  
   sum=. -/
  
   mean1 >:i.5
0.6
  
   mean >:i.5
3

後のsumの変更でもmeanは不変 
!. Fit
Customize
フィット
カス
トマイズ
(接続詞)
許容誤差          

(^!._1)~ i.5     
1 1 2 6 24         

([:*/]+_1:*i.)"0 i.5   
1 1 2 6 24         

(^!.1)~ i.5      
1 1 6 60 840        

([:*/]+i.)"0 i.5     
1 1 6 60 840

!.で指定した数値や文字列を挿入する
1 0 1 1 0 1 1#^:_1(!.100)]i.5
0 100 1 2 100 3 4

3j1 0 2 0 3 # !.'*' 'JAPLA'
JJJ*PPAAA
   5^!.0.1 ] 4
702.78

  */ 5.0 5.1 5.2 5.3
702.78

stope 海岸段丘
:.
無し
Obverse
オブバース
逆定義
(接続詞)
逆定義が正しく定義されたか 
どうかを確かめる。     

f=.*: :. %:       

g=.*: :. +:       

f i.5          
0 1 4 9 16  NB. x^2       

g i.5          
0 1 4 9 16         

先の動詞だけが実行される  

f ^:_1 f i.5  NB. OK     
0 1 2 3 4          

逆関数が正しく定義されてい 
れば右引数の値を返す。

g ^:_1 g i.5       
0 2 8 18 32         

「+: *: y」の演算結果で正  
しく定義されていない。   

無し Even
(接続詞)
u .. v
2つの動詞を接続して1つの動詞になる。
 「-:@(u+u&v)」と同じ  
 
    (*: ; *:&+:) 4
+--+--+
|16|64|
+--+--+
 
    -:@(*:+*:&+:)4     
40
   
    *: ..+: 4       
40

    1 2 3 4 5&p. 2 _2   
 129 64          
   
    1 2 3 4 5&p. ..- 2   
93
   
    1 0 3 0 5&p. 2     
93
Odd
(接続詞)
u .: v
2つの動詞を接続して1つ の動詞になる。
 「-:@(u-u&v)」と同じ   

    -:@(*:-*:&+:)4     
 _24            

    *: .:+: 4       
 _24            

書式/数値と文字の変換

":
Default Format
デフォルト 書式
": Y
数値で与えた右引数を文字化 する。
]y=.":i.2 5       
0 1 2 3 4          
5 6 7 8 9          

$ y           
2 9             

文字化されている!     
Format
書式
X ": Y
書式を整え文字化して表示 整数部で全体の桁数、小数 部で小数以下の桁数を示す

(Ver 6以降) 6.2から6j2に変更 (互換無し)

    6j2 ": 1 2 3 %3    
   0.33  0.67  1.00    

    3j2 ": 1 2 3 %3    
 *********         
スペースが足りないと表示せず 
". Do
実行
". Y
文字列で与えた右引数を数値 化して実行する。
a=.'3+4+5'        

". a           
12
CSVファイルで読み込んだデータはBOXに入った文字なので開いて数値化する。 ".@> DATA
Numbers
X ". Y
Yを数値化したときに欠け た部分をXで補う。
    y=.'1 2 3','4 5',:''  
   
    10 ". y        
  1  2  3         
  4  5 10         
 10 10 10         

文字列の演算

\[ \begin{array}{cccc} J-data&char&1byte&0-255\\ &wchar&2byte&0-65535\\ Code&ASCII&&0-127\\ &U8&Unicode&0-65535\\ \end{array} \]
用法APL結果と例(単項) 用法結果と例(両項)
a.
Alphabet
アルファ ベット
アルファベットなどの256の キャラクターを表示する。
]s=.a.i.'aA'        
97 65             

a,Aの位置を検出している。 

(s+/i.26){a.        
abcdefghijklmnopqrstuvwxyz  
ABCDEFGHIJKLMNOPQRSTUVWXYZ  
a:
Ace
(名詞)
空のボックスのリスト     
;:
Word
単語
;: Y
単語を識別
   ;: ' ABC xyz'
+---+---+
|ABC|xyz|
+---+---+

 >  ;: 'ABC xyz'
ABC
xyz

  |.&. s: ' ABC xyz'
+---+---+
|xyz|ABC|
+---+---+
a.を併用して数字、Space、文字、NB.等を 識別できる(複雑)Vocabraly参照
sequential Machine
m ;:Y
0-5の引数と右に複雑な引数を付加した文字列処理。

Vocabralyにquote(')による文の区切りや途中の抜きなどの事例あり (複雑)

s:
symbol
文字ではなく単語を区分し認識させる
  a=. ' hand in hand'

(最初に1スペース空ける)
 
   s: a
`hand `in `hand

   |. s: a
`hand `in `hand
 
   |. a
dnah ni dnah 

文字列に多くの関数が適用できる

   /:~ s: a
`hand `hand `in
A=.s:' 大久保 中野 高円寺 荻窪'
   ,.A
`大久保
`中野   
`高円寺
`荻窪   

   |. A
`荻窪 `高円寺 `中野 `大久保
先頭にスペースを入れる。単語の区切りは半角で。(全角でも よさそうだ。単語の前に(`)が入れば良い)
s:
symbol
文字列の演算のため
多くのパラメータが用意されている
  
  5 s: s: a
+----+--+----+
|hand|in|hand|
+----+--+----+
  
   ;: a
+----+--+----+
|hand|in|hand|
+----+--+----+
u:
Unicode
JのVer5からUnicodeが利用できる(U8)
(u:を用いなくとも普通にUnicodeは利用できる)
   u: 'JAPLA'
JAPLA
  
   3!:0 u: A
131072
  
  131072が出ればnicode
u: パラメータは1-8まである。 1,2/8bittのchar,wcharの高位置を改変 6,7,8/wchar ASCII U8の変換 (Fontによる差異あり)
  3&u: 'JAPLAjapla'

74 65 80 76 65 106 97 
112 108 97

a.での文字の位置を示す