APL/J言語:単語構成

英語の解釈は文を単語に分解するところから始まります。最初はスペースで区切られた部分がベースとなるのですが、アポストロフィや句読点によって、事態は複雑になります。「was」と「Brown and Ross’」はそれぞれ一つの単位ですが、「however,」は違います。なぜならカンマはそれ自体で一つの単位だからです。

次に示す文字列はJ言語での文にあたり、実行の意味の関数".(クオートドット)で実行できます。

   m=: '3 %: y'   NB.x %: yはyのx乗根
   d=: 'x %: y'
   x=: 4
   y=: 27 4096

   ". m
3 16

   do=: ". 
   do d
2.27951 8

j言語の単語構成はディクショナリーのパート1に書いてあります。さらに、単語構成関数;:(セミコロンコロン)は文に作用させると、文を構成する単語のリストをボックス化して示します。

   ;: m
 +-+--+-+
 |3|%:|y|
 +-+--+-+

   words=: ;:
   words d
 +-+--+-+
 |x|%:|y|
 +-+--+-+

J言語の語形成ルールはほぼ英語のフレーズにも当てはまります。

   words p=: 'Nobly, nobly, Cape St. Vincent'
 +-----+-+-----+-+----+---+-------+
 |Nobly|,|nobly|,|Cape|St.|Vincent|
 +-----+-+-----+-+----+---+-------+

   >words p
Nobly  
,      
nobly  
,      
Cape   
St.    
Vincent

演習:
16.1 前章のpp=:+//.@(*/)のような文に対し、単語構成関数;:(セミコロンコロン)を作用させ、単語構成を観察せよ。

   ;: 'pp=:+//.@(*/)'
 +--+--+-+-+--+-+-+-+-+-+
 |pp|=:|+|/|/.|@|(|*|/|)|
 +--+--+-+-+--+-+-+-+-+-+

16.2 カーソルを行の左にもって行き、ラインから1つ以上のスペースがあいたところで、Ctrl F1を押すことにより、ボックス化された文を表示させよ。

   pp=:+//.@(*/)
 +--+--+-+-+--+-+-+-+-+-+
 |pp|=:|+|/|/.|@|(|*|/|)|
 +--+--+-+-+--+-+-+-+-+-+