APL/J言語:フレットとスクリプト

APL/J言語:フレットとスクリプト

ホストシステムでは通常ラインフィードやキャリッジリターンキャラクターである10{a.(アスキー文字全体の中の10番目)や13{a.(同じく13番目)、またはその両方が行の切れ目のしるし(フレット)としてよく使われます。そういった行の切れ目を0個以上含む文字列のリストのことをスクリプトと呼びます。


付録(Appendix)Aで述べられているように、スクリプトtはファイルとして保存したり、再使用したり出来ます。方法はt 1!:2 <'abc'で保存、及びt=: 1!:1 <'abc'で読み込み、実行は0!:11 <'abc'です。


フレーズ0 : 0で簡単にスクリプトを入力することができます。0 : 0に続けて入力したキーストロークは文字列として扱われます。エンターキーは通常は入力の終了を意味しますが、ここではフレットとして受け取られ、エントリー全体の終了は一つの右かっこを入力することで、最後のフレットとして受け取られます。

   s=: 0 : 0
y*%:y
:
x*!y
)
   a. i. s   NB.インデックス10が行末のしるしです
121 46 42 37 58 121 46 10 58 10 120 46 42 33 121 46 10

スクリプトsのボックス化した表現やテーブル表現は次のようにして得ることができます。

   ]b=: <;._2 s   NB.フレットを削除する
 +-----+-+----+
 |y*%:y|:|x*!y|
 +-----+-+----+
   ]t=: >b
y*%:y
:      
x*!y

いずれの表現rも、明示的な定義接続詞の右側引数として使えて、副詞(1 : r)、接続詞(2 : r)、動詞(3 : rまたは4 : r)を生成することが出来ます。

   f=: 3 : s
   f 9   NB.スクリプト中のコロンが単項動詞の場合と二項動詞の場合を区別します
27
   3 f 4   NB.xとyが左側引数と右側引数を指します
72

フレーズa=: 1 : 0と、c=: 2 : 0と、v=: 3 : 0はそれぞれ副詞、接続詞、動詞の直接入力時に用います。


スクリプトを集めたファイルはJ言語の原始動詞を補完するものとして、関数その他の内容を定義します。一般性の度合いによって二次関数、三次関数などとも呼ばれます。