"pathname" |
文字列の第一要素が #\< #\> #\| 以外のとき文字列全体をファイルのパス名として解釈する。 出力手続きでファイルが既に存在した場合の動作について は規定しない。 |
"<pathname" |
文字列の第一要素が #\< のとき入力手続きに対して有効。文字列の2文字目以降を ファイルのパス名として解釈する。 |
">pathname" |
文字列の第一要素が #\> で第二要素が
#\> 以外のとき出力手続きに対して有効。文字列の2文字目以降を ファイルのパス名として解釈する。ファイルが既に存在 した場合はそれに上書きする。 |
">>pathname" |
文字列の第一要素が #\> で第二要素が
#\> のとき出力手続きに対して有効。文字列の3文字目以降を ファイルのパス名として解釈する。ファイルが既に存在 した場合はそれに追加する。 |
"|command" |
文字列の第一要素が #\| のとき文字列の2文字目以降をコマンド文字列として解釈する。 入力手続きに対してはその標準出力を読み込む。出力手続き に対してはその標準入力に書き込む。コマンドの終了 ステータスは rp:file-status (下記参照)で取得できる。 |
入力のための指定か出力のための指定かは手続きによって決まっているため、
パイプ記号は常に文字列の先頭に置かれる。この点で perl での指定方法と異なる
ので注意。
一般
(gensym) procedure
(rp:symbol-value symbol) procedure
symbol の(トップレベルの環境での)値。
これは他の lisp 方言でよくみられる属性リストを実現するなどの利用を
想定したものである。プログラム上の変数としての使用と
rp:symbol-value での値の使用を混ぜることは推奨しない。
(rp:symbol-value-set! symbol value) procedure
symbol の(トップレベルの環境での)値に
value をセットする。
rp:symbol-value の注意を参照のこと。
(eval expression) procedure
expression をトップレベルの環境で評価する。
(break [prompt]) procedure
prompt
は文字列、省略時 "break> "
(continue) procedure
continue は未定義である。
(rp:derivation procedure) procedure
procedure が
(procedure expression environment)の形で呼び出される。ここで
expression
は評価しようとしている式自身である。
この呼び出しから返される値が再度評価され、元の式の値とされる。
この呼び出しが値を返す前に元の式を再び評価しようとしてはならない。
マクロ呼び出しは最初に評価された時にその展開形に置き換えられる。
また、展開がエラーになるとその事実が記憶されてしまう
(展開関数がリターンしていない。)従ってマクロ定義を変更した場合は
それを使用している他の関数も再ロードしなければならない。rp:load-into-compiler-environmant かコンパイラの
-load オプションでロードしなければならない。(rp:load-into-compiler-environment file) syntax
(load file) と同じ。
トップレベルに置かれた場合、コンパイル時には file がコンパイラの環境に
ロードされる。したがってその内容は出力コードに含まれるのではなく、
コンパイルそのものの過程に影響を与える。
(exit [exit-code]) procedure
exit-code (省略時 0)で pi を終了する。
(system string) procedure
system() を実行し、その値を返す。
(getenv string) procedure
string の値を返す。
(file-exists? string) procedure
string をその名前とするファイルが存在するとき
#t,存在しないとき #f を返す。
*invocation-arg* global variable
(rp:command-line-arguments) procedure
(rp:time) procedure
#(real user sys)
の形で起動時からの実行時間情報を返す。
(rp:errno) procedure
errno の値。
(rp:strerror errono) procedure
strerror(errno)
で得られる文字列。
(error [error-code]) procedure
(rp:catch-error procedure expression) syntax
procedure を評価する。
これは1引数の手続きにならなけばならない。次に
expression を評価し、その値を自身の値とする。
ただし expression
の評価中にエラーが発生した場合、procedure が
(procedure error-code)の形で呼び出され、その返す値が元の式の値とされる。 このエラー処理環境は continuation の一部をなすと考えられる。
(rp:call-with-error-handler error-proc thunk) procedure
(rp:catch-error procedure expression)
は以下の式に展開するマクロとして実現されている。
(rp:call-with-error-handler error-proc (lambda () expression))
(rp:error-message error-code) procedure
(rp:print-error-message error-code [port]) procedure
port (省略時 current-output-port)
にエラーメッセージを出力する。
(rp:set-signal-handler signal procedure) procedure
signal はシステムで可能なシグナル番号、
procedure は1引数の手続きあるいは
#t または #f でなけばならない。
シグナル signal が発生すると
procedure が
(procedure signal)の形で呼ばれるようになる。この
procedure
中で行えることについては特に制限はない。
procedure が #t
の時はデフォルトの処理に戻し、#f の時はシグナルを
無視するようにする。戻り値は元のシグナルハンドラとなる。
(rp:signal-message signal) procedure
signal
に対するメッセージを文字列として返す。
(rp:print-signal-message signal [port]) procedure
port (省略時 current-output-port)
にシグナルメッセージを出力する。
(rp:current-error-port) procedure
stderr に対応する出力ポートを返す。
(rp:set-current-input-port [port]) procedure
(rp:set-current-output-port [port]) procedure
current-input-port, current-output-port
を変更する。引数を省略すると起動直後の状態に戻す。
(open-input-string string) procedure
string から入力をとる入力ポートを返す。
(open-output-string) procedure
(get-output-string port) procedure
port は rp:open-output-string
で作られたポートでなければならない。その出力結果を文字列として取り出す。
(rp:open-input-procedure procs) procedure
procs は4要素の vector である。
これを
#(getchar ungetchar getlinecount char-readyp)とする。それぞれの要素は手続きである。返されたポートから入力を行うと
getchar が呼ばれる。
(getchar) => (char . procs')
procs' は procs と同様の
vector である(以下同様。)これを
#(getchar' ungetchar' getlinecount' char-readyp')とする。
char が文字であればそれがポートから
入力された文字となる。数であればポートからの入力はエラーとなり、
その値がエラーコードとなる。#f であればポートは
end-of-file の状態にあるものとされる。
次のポートに対する操作では procs' が使用される。ungetchar は次のようにして呼ばれる。
(ungetchar char) => procs'この時
(getchar') => (char . procs''), procs == procs''
となることが期待される。getlinecount は次のようにして呼ばれる。
(getlinecount) => (linecount . procs')
linecount は整数で、
getlinecount が呼ばれた時の行番号として扱われる。
ただし 0 の場合は行番号不明を意味するものとする。char-readyp は次のようにして呼ばれる。
(char-readyp) => (ready? . procs')
ready? がブール値の場合、
それがポートに対する char-ready? の値とされる。
数であればそれをエラーコードとするエラーが発生する。
注: これらの手続きが呼ばれてリターンするまでの間、そのポートは使用できない。 従って特にエラーは発生すべきでない。エラーとなるべき状況は上記インター フェースを通して手続きを呼び出した機構に通知することになる。また、これらの 手続きが複数回リターンした場合の効果は予想できない。
(rp:open-output-procedure proc) procedure
proc は手続きである。
返されたポートに出力を行うと proc
が次のようにして呼ばれる。
(proc char) => (result . proc')
char は出力する文字である。
result が #t
であれば出力が正常に行われたものとされ、
数であればそれをエラーコードとするエラーが発生する。
次のポートに対する操作では proc' が使用される。
rp:open-output-procedure に対する注が同様に適用される。
(rp:file-status port) procedure
port が open-output-file
あるいは open-input-file から得られたものでない場合は
エラーとなる。そうでない場合 port
のクローズ時の状態によって以下のような値が返される。
#f |
まだクローズしていない |
| エラーが発生 | クローズ操作(fclose, pclose)が -1 を返していた |
| 整数値 | クローズ操作(fclose, pclose)の戻り値(-1 以外) |
(rp:apply-with-evaluator-hook hook-function procedure arguments)
(rp:hook-evaluator hook-function expression environment continuation)
(rp:call-evaluator expression environment)
(rp:top-level-environment)
(rp:expression->data expression environment)
(rp:hook-applicator hook-function procedure)
(rp:unhook-applicator procedure)