APL/J言語:エラーとサスペンション

APL/J言語:エラーとサスペンション

文の実行はエラーが起きると中止(サスペンド)します。エラーメッセージとコンテキスト情報が画面に出力されます。4つのブランクが構文解析が停止した場所を示します。以下に例を示しますが、サスペンションが起きるのは直接実行時だけでなく、スクリプトファイルの実行時、ユーザーが定義した動詞、副詞、接続詞の実行時にも起きます。

直接実行

   2+'a'
domain error
2 +'a'
スクリプトファイルの実行
   t=: '2*3',(10{a.),'2+''a''',(10{a.),'2+3'
   t   NB.スクリプト
2*3
2+'a'
2+3
   t 1!:2 <'test'   NB.スクリプトファイルを書く
   0!:011 <'test'   NB.ファイルを実行する、エラー時に継続、ディスプレイ(011)
2*3
6
   2+'a'
   2+3
5
   0!:001 <'test'   NB.ファイルを実行する、エラー時に停止、ディスプレイ(001)
   2*3
6
   2+'a'
domain error
2 +'a'
[-2]
ユーザー定義動詞
   g=: 3 : ('1+y' ;  ':' ; '2+x+y')
   3+g 'a'
domain error: g
1 +y
13!:0 (1) NB.サスペンションを可能にする 3+g 'a'
domain error: g
1 +y
g[0]
y NB.6スペースのインデントはサスペンションのしるし a y=. 12 NB.yのローカル値を再定義する 13!:4 '' NB.カレント行で実行を再開する 16 NB.再定義された値を使った結果
文は、中止(サスペンド)した環境で、ローカル値を評価し、再実行することができます。エラーがサスペンションになるのは、フレーズ13!:0]1によってサスペンションを可能にしておく必要があります。サスペンション中はインプットプロンプトは6スペースです。 サスペンションとデバッグ機能は付録(appendix)Aに書かれている13!:ファミリーでコントロールできます。エラーの完全なリストは付録Dにあります。