"pathname" |
文字列の第一要素が #\< #\> #\| 以外のとき文字列全体をファイルのパス名として解釈する。 出力手続きでファイルが既に存在した場合の動作について は規定しない。 |
"<pathname" |
文字列の第一要素が #\< のとき入力手続きに対して有効。文字列の2文字目以降を ファイルのパス名として解釈する。 |
">pathname" |
文字列の第一要素が #\> で第二要素が
#\> 以外のとき出力手続きに対して有効。文字列の2文字目以降を ファイルのパス名として解釈する。ファイルが既に存在 した場合はそれに上書きする。 |
">>pathname" |
文字列の第一要素が #\> で第二要素が
#\> のとき出力手続きに対して有効。文字列の3文字目以降を ファイルのパス名として解釈する。ファイルが既に存在 した場合はそれに追加する。 |
"|command" |
文字列の第一要素が #\| のとき文字列の2文字目以降をコマンド文字列として解釈する。 入力手続きに対してはその標準出力を読み込む。出力手続き に対してはその標準入力に書き込む。コマンドの終了 ステータスは rp:file-status (下記参照)で取得できる。 |
入力のための指定か出力のための指定かは手続きによって決まっているため、
パイプ記号は常に文字列の先頭に置かれる。この点で perl での指定方法と異なる
ので注意。
一般
(gensym)
procedure
(rp:symbol-value symbol [default-value])
procedure
symbol
の(トップレベルの環境での)値。
symbol
が未束縛の場合は
default-value
が返される。
これが指定されていない時の未束縛の場合の戻り値は規定しない。
これは他の lisp 方言でよくみられる属性リストを実現するなどの利用を
想定したものである。プログラム上の変数としての使用と
rp:symbol-value
での値の使用を混ぜることは推奨しない。
(rp:symbol-value-set! symbol value)
procedure
symbol
の(トップレベルの環境での)値に
value
をセットする。
rp:symbol-value
の注意を参照のこと。
(rp:symbol-bound? symbol)
procedure
symbol
がトップレベルの環境で値を
持つなら #t
を、そうでないなら #f
を返す。
(eval expression)
procedure
expression
をトップレベルの環境で評価する。
(break [prompt])
procedure
prompt
は文字列、省略時 "break> "
(continue)
procedure
continue
は未定義である。
(rp:object->string object)
procedure
object
の外部表現を文字列として返す。
(rp:string->object string)
procedure
string
を外部表現として持つオブジェクトを返す。
(rp:eval-in-compiler-environment expression)
syntax
expression
はコンパイル時に評価され、その副作用はコンパイル過程に影響を与える。
(rp:load-into-compiler-environment file)
syntax
(load file)
と同じ。
トップレベルに置かれた場合、コンパイル時には file がコンパイラの環境に
ロードされる。したがってその内容は出力コードに含まれるのではなく、
コンパイルそのものの過程に影響を与える。
(rp:use-macro-package file)
syntax
file
をいくつかのディレクトリから検索し、
みつかったものを rp:load-into-compiler-environment
と同様にロードする。検索は以下の順で行われる。
-mpath
オプションで指定したディレクトリ
RHIZOME_MACRO_PATH
でリストされたディレクトリ
RHIZOME_LIB
で指定されたディレクトリ
rp:*macro-search-list*
に入っているので、この変数の値を変化させることで任意に変更できる。
(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)
で得られる文字列。
(rp:load-compiled-module module)
procedure
module
をロードする。
(rp:catch-error procedure expression)
syntax
procedure
を評価する。
これは2引数の手続きにならなけばならない。次に
expression
を評価し、その値を自身の値とする。
ただし expression
の評価中にエラーが発生した場合、procedure
が
(procedure error-code obj)の形で呼び出され、その返す値が元の式の値とされる。 このエラー処理環境は 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 obj)
procedure
(rp:print-error-message error-code obj [port])
procedure
port
(省略時 current-output-port
)
にエラーメッセージを出力する。
(rp:exception (type arg ...) message-proc)
syntax
(arg ...)
に対応した引数をとる手続きになる。その手続きを呼ぶと
(type arg ...)
の型の例外が発生する。type
はシンボルでなければならない。
message-proc
は (arg ...)
が引数に束縛された環境で評価され、1引数の手続きにならなければならない。
エラーメッセージが必要になった場合、この手続きが出力ポートを引数として
呼ばれるので、そのポートにメッセージを出力する。
(rp:displatch-exception error-code obj ((error-type arg ...) action ...) ...)
syntax
error-code
と obj
は
rp:call-with-error-handler
を介して得られるエラー処理手続きへの引数である。
エラーに対応する型を持つ節が選択され、その節の
action
が (arg ...)
が束縛された状態で実行される。 action
の最後の式の値がこの式の値となる。(default error-code obj)
はすべての型のエラーにマッチする。(rp:os-error errno) |
ファンクションコールのエラー |
(rp:read-syntax-error message) |
(read) でのシンタックスエラー |
(rp:eof-error) |
予期しない eof |
(rp:storage-error) |
メモリアロケーションの失敗 |
(rp:overflow-error) |
数値演算でのオーバーフロー |
(rp:div0-error) |
ゼロでの除算 |
(rp:ldso-error message) |
外部関数に関係したエラー |
(rp:eval-error obj) |
評価できないオブジェクト |
(rp:var-unbound-error var) |
未束縛の変数 |
(rp:apply-error obj) |
手続きでないものの適用 |
(rp:arg-error) |
不正な引数 |
(rp:primitive-error exp) |
基本構文の誤り |
(rp:excess-formal-error) |
仮引数リストが長すぎる |
(rp:arg-count-error) |
引数の数の誤り |
(rp:define-error) |
不正な場所の define 文 |
(rp:exception-error data) |
rp:exception による例外 |
(rp:map-error) |
map の引数の長さが異なる |
(rp:eval-procedure-error) |
evaluator の異常な動作 |
(rp:busy-port-error) |
ビジー状態のポートの使用 |
(rp:port-procedure-error) |
ポート手続きの異常な動作 |
rp:exception-error
型の節はすべての例外にマッチしてしまうことに注意。
(rp:try-except expression ((error-type arg ...) action ...) ...)
syntax
expression
を評価する。評価中のエラーは
rp:dispatch-exception
と同様に処理される。
(rp:raise-os-error errno)
procedure
(rp:os-error errno)
の型のエラーを発生させる。
(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:raise-signal signal)
procedure
(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
が文字であればそれがポートから
入力された文字となる。(error-code obj)
の形のリスト(その要素はエラー処理手続きの引数として与えられたものからなる)
であればポートからの入力はそれと同じ種類のエラーとなる。
#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?
の値とされる。
(error-code obj)
の形のリストであれば
その種類のエラーが発生する。
注: これらの手続きが呼ばれてリターンするまでの間、そのポートは使用できない。 従って特にエラーは発生すべきでない。エラーとなるべき状況は上記インター フェースを通して手続きを呼び出した機構に通知することになる。また、これらの 手続きが複数回リターンした場合の効果は予想できない。
(rp:open-output-procedure proc)
procedure
proc
は手続きである。
返されたポートに出力を行うと proc
が次のようにして呼ばれる。
(proc char) => (result . proc')
char
は出力する文字である。
result
が #t
であれば出力が正常に行われたものとされ、
(error-code obj)
の形のリスト
であればその種類のエラーが発生する。
次のポートに対する操作では 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)