prevcontentnext

SIOD: Scheme In One Defun,
参照用付録

この付録は、SIODの全関数の一覧です。 全ての関数がGimpで実装されているわけではありませんが、 参照用としてご使用ください。

ビルトインプロシージャのための参照セクション

 

ビルトインプロシージャの引数は全てオプションで、 デフォルトは ( ) であることを注意しておきます。 これらのプロシージャの多くは、 同じか似た名前の C のライブラリ関数を、 自明な仕方で呼び出しています。 したがって、これらの関数のより詳細な振る舞いは、 UNIXのマニュアルページを参照することで知ることができます。 このようなプロシージャは、太字の U で示してあります。

(%%%memref address)

これは低レベルなルーチンで、普通のコードから起動するべきではありません。 address 位置のメモリの 1 バイトを参照します。 大抵はデバッグのために、 0 か -1 のアドレスを参照して、 コアダンプを引き起こすのに使います。

(%%closure env code)

これは低レベルなルーチンで、普通のコードから起動するべきではありません。 code が (alist . body) の形の cons の場合、 env はフレームのリストであり、 closure を適用することで、インタプリタが起動されます。 そうでない場合、code は tc_subr_X 型でなければならず、 closure を適用するとき、 subr を実装している C のプロシージャーの第1引数に env を渡します。

(%%closure-code closure)

これは低レベルなルーチンで、普通のコードから起動するべきではありません。 %%closure に渡されたコードを返します。

(%%closure-env closure)

これは低レベルなルーチンで、普通のコードから起動するべきではありません。 %%closureに渡された環境を返します。

(%%stack-limit amount silent)

amount がヌルでなければ、 ランタイムスタックチェックポインタを、 amount バイトまで許すようにセットします。 silent がヌルでなければ、 その結果(または今)のスタックサイズを返し、 そうでなければ、メッセージが出力されます。

(* x1 x2 ...)

全引数の積を返します。引数がないときは、1を返します。

*after-gc*

変数で、値は gc がその仕事をなし終えた直後に評価される式です。 例:

(set! *after-gc* '(if (< (gc-info 4) 5000) (allocate-heap)))

*args*

siod のメインプログラムに渡される引数リストに束縛される変数です。

(*catch tag body ...)

特殊形式です。 tag は評価され、body の全ての式が評価される間、特殊な場所に保存されます。 動的スコープでの評価中に *throw に出合わなければ、 通常、最後の式の値が返ります。 'errorobj という tag を使うと、エラーが捕捉できます。

*env*

siod のメインプログラムに渡される環境の値リストに束縛される変数です。

*eval-history-ptr*

変数です。 デフォルトは ( )ですが、 リスト(循環していてもよい)が設定されると、 eval の呼出し毎に、リストの car が評価される形式へのポインタを受け取り、 リストの cdr にこの変数[の値]*throwがセットされます。 遡ってトレースしていくようなデバッグツールを書くのに便利です。

*pi*

値 3.1416 をもつ変数です。

*plists*

get と putprop の実装で内部的に使用している変数です。

(*throw tag value)

タグが同一かつアクティブな *catch の位置を突き止め、 catch 形式に値を返させます。

*traced*

トレースされたプロシージャのリストを値とする変数です。

(+ x1 x2 ...)

引数の合計を返します。

(- x1 x2 ...)

引数が一つの時は符号を反転したものを返します。 そうでなければ、先頭の引数から残りの引数の合計を引き算したものを返します。

(/ x1 x2 ...)

引数が一つの時は逆数を返します。 そうでなければ、最初の引数と残りの引数の積との商を返します。

(< x y)

x が y より数値的に小さいとき、真を返します。

(<= x y)

x が y より数値的に小さいか等しいとき、真を返します。

(= x y)

x と y が数値的に等しいとき、真を返します。

(> x y)

x が y より数値的に大きいとき、真を返します。

(>= x y)

x が y より数値的に大きいか等しいとき、真を返します。

(F_GETLK fd ltype whence start len)

fd は整数またはファイルです。 ファイル記述子、 引数 ltype, whence, start, len から生成された適切な flock 構造体、 及びロック操作 F_GETLK に対して、関数 fcntl (U)が呼び出されます。 ltype は F_RDLCK, F_UNLCK または F_WRLCK のいずれかです。 whence は SEEK_CUR, SEEK_END または SEEK_SET のいずれかです。

(F_SETLK fd ltype whence start len)

ロック操作が F_SETLK であること以外は、F_GETLCKと同じです。U。

(F_SETLKW fd ltype whence start len)

ロック操作が F_SETLKW であること以外は、F_GETLCKと同じです。 良い使用例として、コマンドスクリプト cp-build を参照して下さい。U。

(abs x)

x の絶対値を返します。

(access-problem? filename method)

filename と文字 "rwxf" を一つ以上含む method 文字列から 生成されたフラグに対して、access 関数(U)を起動します。 指定された method でのファイルアクセスに問題があるとき null以外を返します。 例:

(if (access-problem? "x.y" "r") (error "can't read x.y"))

(acos x)

x の逆余弦を返します。

(alarm seconds flag)

alarm 関数(U)を起動します。 これを処理すると、seconds 秒後にシグナルされるようなエラーを発生させます。 ただし、flag が false のときは、システムコールその他の 重大なコード部分でアラームが発生しても、エラーはシグナルされません。

(allocate-heap)

追加のヒープを得るために、メモリ割当てを試みます (Cライブラリのプロシジャ malloc を呼出します)。 ヒープの大きさとヒープの最大数は開始時に決められています。 成功すれば null以外を返します。

(and form1 form2 form3 ...)

その副形式を左から右に順番に評価する特殊形式です。 副形式が null以外の値を返している限り評価し続けます。

(append l1 l2 l3 l4 ...)

その引数を全て結合したリストを返します。例:

(append '(a b) '(c d)) => (a b c d)

(apply function arglist)

関数 function を引数リスト arglist に適用します。

(apropos substring)

与えられた部分文字列 substring を含む全てのシンボルのリストを返します。

(aref array index)

与えられたインデックス index に位置する、配列 array の要素を返します。

(array->hexstr string)

文字列またはバイト列を受け取り、要素の値を16進数で表した文字列を返します。

(aset array index value)

値 value を配列 array の与えられたインデックス index の位置に格納します。

(ash value bits)

値 value を与えられたビット数 bits だけ、 左(正の場合)や右(負の場合)に算術的にシフトします。

(asin x)

x の逆正弦を返します。

(ass key alist function)

alist の要素の car と key に function を適用した結果が null以外の値になる、 alist の最初の要素を返します。例:

(define (assq x alist) (ass x alist eq?))

(assoc key alist)

(ass key alist equal?)と同じです。

(assq key alist)

(ass key alist eq?)と同じです。

(assv key alist)

(ass key alist eql?)と同じです。

(atan x)

x の逆正接を返します。

(atan2 x y)

x/y の逆正接を返します。

(base64decode x)

base64表現の文字列 x を与えると、 base64のデコードアルゴリズムを使用して計算したバイトの文字列を返します。 rfc1521.txtを参照して下さい。

(base64encode x)

base64 エンコードアルゴリズムを使用して計算した文字列を返します。

(begin form1 form2 ...)

副形式を逐次評価していく特殊形式で、 最後の副形式の値を返します。

(benchmark-eval nloops exp env)

オーバーヘッドなしで、式 exp を n回評価します。

(benchmark-funcall1 nloops f arg1)

オーバーヘッドなしで、関数 f を引数 arg1 で n回呼び出します。

(benchmark-funcall2 nloops f arg1 arg2)

オーバーヘッドなしで、関数 f を引数 arg1 と arg2 で n回呼び出します。

(bit-and x y)

数値引数 x と y についてビット単位で論理的"and"(C言語の&演算子) をとったものを返します。

(bit-not x)

数値引数 x をビット単位で論理的に反転したもの(C言語の~演算子)を返します。

(bit-or x y)

数値引数 x と y についてビット単位で論理的"or"(C言語の|演算子) をとったものを返します。

(bit-xor x y)

数値引数 x と y についてビット単位で論理的"xor"(C言語の^演算子) をとったものを返します。

(butlast x)

引数 x の最後の要素を除く全要素を持った新しいリストを返します。

(bytes-append x1 x2 ...)

文字列または byte配列の引数を結合した、新しい byte配列を返します。

(caaar x)

(car (car (car x)))と同じです。

(caadr x)

(car (car (cdr x)))と同じです。

(caar x)

(car (car x))と同じです。

(cadar x)

(car (cdr (car x)))と同じです。

(caddr x)

(car (cdr (cdr x)))と同じです。

(cadr x)

(car (cdr x))と同じです。

(car x)

x が (cons a b) の結果であるとき、(car x) は a と等しくなります。

(cdaar x)

(cdr (car (car x)))と同じです。

(cdadr x)

(cdr (car (cdr x)))と同じです。

(cdar x)

(cdr (car x))と同じです。

(cddar x)

(cdr (cdr (car x)))と同じです。

(cdddr x)

(cdr (cdr (cdr x)))と同じです。

(cddr x)

(cdr (cdr x))と同じです。

(cdr x)

x が (cons a b) の結果であるとき、(cdr x) は b と等しくなります。

(chdir path)

デフォルト・ディレクトリを path に変更します。U。

(chmod path mode)

pathのファイルモードを変更します。U。 例えば、ファイル f に実行権限を付与するには:

(chmod f
(encode-file-mode (append '(XUSR XGRP XOTH)
(cdr (assq 'mode (stat f))))))

(chown path uid gid)

ファイルの所有者を変更します。U。

(closedir stream)

ディレクトリ stream を閉じます。U。

(cond clause1 clause2 ...)

節(clause)の述語式 predicate-expression が 真と評価されるまで、 各節を処理していく、という特殊形式です。 次に節中の副形式が評価され、 その最後のものの値が cond 形式の値になります:

(predicate-expression form1 form2 ...)

(cons x y)

x を car、y を cdr とする リストオブジェクトを割り当てます。例:

(cons 1 (cons 2 (cons 3 ())))

の値は次のようになります

(1 2 3)

(cons-array dimension kind)

配列を割り当てます(今のところ、一次元に限定されています)。 kind として、string、byte、double、lisp(デフォルト)のいずれかを指定できます。

(copy-list x)

x のトップレベルの consオブジェクトをコピーし、新しいリストを返します。

(cos x)

x をラジアン単位とした余弦を返します。

(cpu-usage-limits soft-limit hard-limit)

引数がヌルのときは、getrlimit を起動し、 そうでなければ setrlimit 起動します。U。

(crypt key salt)

文字列ハッシュの1形式です。U。

(current-resource-usage kind)

kind は記号 SELF または CHILDREN で、getrusageを起動します。U。

(datlength data ctype)

datref 関数により配列として見たときの、data のサイズを返します。

(datref data ctype index)

data を C のデータ型 ctype の配列と見なして、 与えられた index 位置の値を参照します。 ctype として次のものが指定できます: CTYPE_CHAR, CTYPE_DOUBLE, CTYPE_FLOAT, CTYPE_LONG, CTYPE_SHORT, CTYPE_UCHAR, CTYPE_ULONG, CTYPE_USHORT。data は文字列や byte列も可です。

(decode-file-mode x)

数値のファイルモードを与えると、シンボルのリストを返します。

(define subform1 subform2)

二つの使い方がある特殊形式で、一つは変数に値を代入するのに使います:

(define variable value)

もう一つはプロシージャを作成するのに使います

(define (procedure-name arg1 arg2 ...)
form1
form2
...)

(delete-file path)

path によって指定されたファイルを削除します。

(delq element list)

第1引数に一致(eq)するリストの要素を削除します。 多分、set-cdr! 操作で list を変更してしまいます。

(encode-file-mode list)

ファイルモード・シンボルのリストを受けとり、 数値にして返します。 SUID, SGID, RUSR, WUSR, XUSR, RGRP, WGRP, XGRP, ROTH, WOTH, XOTH。

(encode-open-flags list)

オープン(U)フラグ・シンボルのリストを受けとり、数値にして返します。 NONBLOCK, APPEND, RDONLY, WRONLY, RDWR, CREAT, TRUNC, EXCL。

(endpwent)

Uを参照して下さい。

(env-lookup indentifier environment)

識別子 identifier の値が保持されている場所が car であるオブジェクトを返します。

(eof-val)

EOF状態になったときに、read が返すオブジェクトを返します。

(eq? x y)

x と y が同じオブジェクトであるとき、真を返します。

(equal? x y)

x と y が等価なオブジェクトであるとき、真を返します。

(eqv? x y)

x と y が同じオブジェクトまたは数値的に等価であるとき、真を返します。

errobj

エラープロシージャが呼び出されたとき、 この変数に違反したオブジェクトが代入されます。 主に対話的なデバッグのときに便利です。

(error message object)

エラーメッセージを表示してから、 記号 errobj をタグとし、 message と object の cons を値として *throw を起動することにより、 現在の実行を中断します。 次と等価です:

(define (error message object)
(if (> (verbose 0))
(writes nil "ERROR: " message "\n"))
(set! errobj object)
(*throw 'errobj (cons message object)))

(eval expression environment)

環境 environmnet の下で式 expression を評価します。 これは特殊形式ではありません。 例:

(eval (read-from-string "(+ 1 2)"))

は、3と評価されます。

(exec path args env)

execv または execve を起動します。U。

(exit status)

exitを起動します。U。

(exp x)

x の指数関数を計算します。

(fast-load path noeval-flag)

バイナリ形式の式からなるファイルをロードします。 noevalフラグが真の場合、形式を評価せずに形式のリストを返します。

(fast-print object state)

オブジェクトを高速(バイナリ)形式の表現で出力します。 state は (file hash-array index) のリストです。

(fast-read state)

高速(バイナリ)形式で出力された形式を読み込みます。

(fast-save filename forms nohash-flag comment-string)

forms の各形式を出力するのに fast-print を使って、ファイルを作成します。 nohash-flag が真の場合、シンボル名は出現する度に出力されます。 そうでなければ、より最適化されたインデックス表現が使われます。 comment-string がファイル内のデータの最初の行になります。

(fchmod filedes mode)

filedes は数値でもオープンしたファイルオブジェクトでも可です。U。

(fclose stream)

オープンしたファイルストリームを閉じます。U。

(fflush stream)

Uを参照して下さい。

(file-times path)

stat 関数によって返される st_ctime と st_mtime のリストを返します。U。

(first x)

リスト x の最初の要素(car)を返します。

(fmod x y)

浮動小数点の剰余です。U。

(fnmatch pattern string flags)

文字列 string がパターン pattern にマッチするとき、真を返します。U。

(fopen path mode)

ファイルをオープンし、ファイルストリームを返します。U。

(fork)

子プロセスを生成します。 親プロセスには数値の pid を、 子プロセスには( )を返します。 子プロセスを作成することができない場合は、error を呼び出します。U。

(fread size-or-buffer stream)

fread(U)を呼んで size バイトの新規文字列返すか、 代りにバッファ(文字列やバイト列)を使って 読み込んだバイト数を返します。 ファイルの終りに達したら( )を返します。

(fseek file offset direction)

direction は SEEK_CUR, SEEK_END, SEEK_SET のいずれかです。U。

(fstat stream)

fstat (U)を呼んで、 dev, ino, mode, nlink, uid, gid, rdev, size, atime, mtime, ctime, blksize, blocks, flags および gen を要素とする連想リストを返します。

(ftell stream)

ftell(U)を呼んで、ファイルの現在のオフセット位置を返します。

(fwrite data stream)

ストリーム stream に data つまり文字列やバイト列を書き込みます。 data は文字列またはバイト列と数値的長さとからなるリストも可です。

(gc)

ガーベジコレクターを呼び出します。

(gc-info item)


item
0 コピーによる gc のとき真, 印をつけて一掃のとき偽
1 アクティブなヒープの数
2 ヒープの最大数
3 ヒープ当たりのオブジェクト数
4 次の gc までに cons したオブジェクトの量

(gc-status [flag])

フラグ flag が指定されない場合は、 gcについての情報を出力します。 そうでなければフラグを使って gc メッセージをオンオフするか、 ストップ・アンド・コピーモードの時は gc 自身をオンオフすることができます。

(get object key)

オブジェクトのキー属性を返します。

(getc stream)

ストリームから1文字読み込みます。ファイルの最後で( )を返します。U。

(getcwd)

現在の作業ディレクトリを返します。U。

(getenv name)

環境変数名 name の値または ( )を返します。U。

(getgid)

プロセスのグループid を返します。U。

(getgrgid gid)

指定したグループid をもつメンバーのリストを返します。U。

(getpass prompt)

ユーザーに入力を促し、エコーをオフにして1行読み込みます。U。

(getpgrp)

呼び出したプロセスのプロセスグループIDを返します。U。

(getpid)

呼び出したプロセスのプロセスIDを返します。U。

(getppid)

呼び出したプロセスの親プロセスIDを返します。U。

(getpwent)

/etc/passwdファイル中の次のアイテムを表わす連想リストを返します。U。

(getpwnam username)

与えられた username に関する /etc/passwdファイルのエントリを返します。U。

(getpwuid uid)

与えられたユーザーid に関する /etc/passwdファイルのエントリを返します。U。

(gets stream)

ストリームから1行読み込みます。ファイルの終りでは ( ) を返します。

(getuid)

現プロセスの uid を返します。U。

(gmtime value)

値 value を連想配列にデコードします。 値のデフォルトは現在時刻です。U。

(hexstr->bytes str)

16進表現をバイト列にデコードします。

(href table key)

ハッシュテーブル table は連想配列の一次元配列です。

(define (href table key)
(cdr (assoc key
(aref table (sxhash key (length table))))))

(hset table key value)

key で指定したハッシュテーブル table のスロットに value を格納します。

(html-encode str)

str が html 特殊文字(<>&)をのいずれかを含んでいるとき、 それらを対応する表現 &lt; &gt; &amp; で置換した新しい文字列を返します。

(if predicate-form true-form false-form)

述語形式 predicate-form の評価結果によって、 true-form または false-form を評価する特殊形式です。

(intern str)

シンボルテーブルの文字列を検索するか、 新しいシンボルとして登録します。

(kill pid sig)

シグナル sig で kill関数 U を呼び出します。sig のデフォルトは SIGKILL です。

(lambda (arg1 arg2 ...) form1 form2 ...)

与えられた引数リストと式の副形式を持つ、 適用可能なプロシージャオブジェクト(CLOSURE)を返します。例えば:

(mapcar (lambda (x) (* x x)) '(1 2 3))

は、次ように評価されます:

(1 4 9)

define 特殊形式でも使われます。

(larg-default list index default-value)

コロンもしくはダッシュで始まる文字列をスキップして、index に従って list を参照します。 list が十分長くないときは、代わりにデフォルト値 default-value を返します。 メインプログラム中の *args* 変数に関して使用するととても便利です。

(last list)

list の最後の cons を返します。

(last-c-error)

シンボルとして格納されている Cライブラリ strerror(errno) (U) の値 を返します。

(lchown path owner group)

シンボリックリンクの所有者を変更します。U。

(length object)

オブジェクトの長さを返します。 オブジェクトとしては、文字列(strlen のように機能します)、リスト、配列が考えられます。

(let (binding1 binding2 ...) form1 form2 ...)

各束縛(binding)が (変数 値) のペアであるような特殊形式で、 値を計算し、束縛を確立し、形式を評価し、最後の形式の値を返します。 例えば、下記は 30 と評価されます:

(let ((x 10)
(y 20))
(+ x y))

(let* (binding1 binding2 ...) form1 form2 ...)

各束縛(binding)が (変数 値) のペアであるような特殊形式で、 各値を逐次的に計算してから束縛を確立するように機能します。 例えば、下記は 30 と評価されます:

(let* ((x 10)
(y (+ x 10)))
(+ x y))

(letrec (binding1 binding2 ...) form1 form2 ...)

束縛の値の形式をラムダ式にして、 相互再帰的に呼び出すようにプログラムしたいときに便利です。

(link existing-file entry-to-create)

ハードリンクを作成します。U。

(list item1 item2 ...)

引数を cons してリストを生成します。

(lkey-default list index default-value)

index=value 形式のリストの最初の要素の等号の右辺にある文字列を返します。 見つからない場合は、デフォルト値 default-value を返します。 メインプログラム中の *args* の値を処理する時に便利です。

(load fname noeval-flag search-flag)

search-flag が真であれば現在のディレクトリ、次に SIOD_LIBディレクトリから fname のファイルを探します。 ファイル中の形式をファイルの先頭にある指令 "parser:xxx" (デフォルトは "parser:read")に従って構文解析します。 noeval-flag が真であれば、形式のリストを返し、 そうでなければ形式を評価します。

(load-so fname init_fcn)

fname で指定されたダイナミックライブラリをロードし、 指定されていれば init_fcn (デフォルトは init_fname)を呼び出します。

(localtime value)

地域時刻として value の値を表す連想配列を返します。U。 デフォルト値は現在時刻です。

(log x)

x の自然対数を計算します。

(lref-default list index default-fcn)

リスト list の index 位置の要素を返します。 リストが十分に長くない場合は、default-fcn を呼び出した結果を返します。

(lstat path)

論理的リンクの stat情報を返します。U。

(make-list length element)

指定された element で満たした、与えられた長さ length のリストを作成します。

(mapcar fcn list1 list2 ...)

指定されたリストの各要素に fcn を適用した結果のリストを返します。

(max x1 x2 ...)

x1, x2, 等の中の最大値を返します。

(md5-final state)

RSA Data Security, Inc. の MD5 メッセージダイジェスト・アルゴリズムから 導出した state から計算したバイト列を返します。 rfc1321.txt を参照して下さい。例:

(define (md5 str)
(let ((s (md5-init)))
(md5-update s str)
(array->hexstr (md5-final s))))

(md5-init)

md5 アルゴリズムの状態をバイト列として返します。

(md5-update state string length)

string の length までのデータを使って md5 アルゴリズムの更新ステップを実行します。 length はオープンされているファイルオブジェクトでもよく、 その場合は更新を行うためにファイルからのデータが使用されます。

(member key list)

car が key に等しい(equal)リストの部分を返します。見つからなければ ( ) を返します。

(memq key list)

car が key と同一(eq)なリストの部分を返します。 見つからなければ ( ) を返します。

(memv key list)

car が key と等価(eqv?)なリストの部分を返します。見つからなければ ( ) を返します。

(min x1 x2 ...)

引数中の最小数を返します。

(mkdatref ctype ind)

機能的に (lambda (x) (datref x ctype ind)) と等価なクロージャーを作成します。

(mkdir path mode)

指定された数値のアクセスモードでディレクトリを作成します。U。

(mktime alist)

localtime 関数によって返されるのと同じフォーマットの 連想配列 alist に対応する時間数値を返します。U。

(nconc l1 l2)

l1 の最後の cons の cdr が l2 をポイントするようにします。

(nice increment)

現在のプロセスの優先度を increment だけ増加させます。U。

nil

空リストに束縛されている変数です。値を変更しないで下さい。

(not x)

x の真偽値を反転したものを返します。

(nreverse list)

set-cdr! を使用して、リスト要素の並び順を破壊的に反転します。

(nth index list)

index を使ってリストを参照します。第1要素の index は 0 です。

(null? x)

x が空リストのとき真を返します。

(number->string x base width precision)

数を基数 base に従って整形します。 基数として、8, 10, 16 または記号 e, f が使えます。 幅 width と精度 precision はどちらもオプションです。

(number? x)

x が数のとき真を返します。

(opendir path)

ディレクトリストリームを返します。 UNIX では path はディレクトリ名ですが、 WIN32では path はワイルドカード・パターンであることに注意して下さい。U。

(or form1 form2 ...)

非空の値に評価される形式が現れるまで、 副形式を左から右に逐次的に評価していく特殊形式です。

(os-classification)

UNIX, win32, vmsを返します。

(pair? x)

x が(consにより作成された)ペアであるとき真を返します。

(parse-number str)

文字列を数値に変換します。

(pclose stream)

popen を使ってオープンしたストリーム stream をクローズするのに使います。 関連したプロセスが kill されていることを確実にしておいて下さい。U。

(popen command type)

子プロセスのコマンドを実行して、 type が r のときはプロセスの標準出力、 type が w のときは標準入力 に接続されたストリームをオープンします。U。

(pow x y)

x の y 乗を計算します。

(prin1 object stream)

オブジェクト object の標準的で可読な表現を stream に出力します。 stream のデフォルトは標準出力です。

(print object stream)

最後に改行を出力することを除いて prin1 と同じです。

(print-to-string object string no-trunc-flag)

オブジェクト object の可読な表現を文字列 string に書き込みます。 no-trunc-flag が偽の場合は、string の第1文字から、 そうでない場合は、string の現在の長さの位置から書き込みます。

(prog1 form1 form2 form3 ...)

全ての副形式を評価しますが、最初の形式の値を返す特殊形式です。 let の代わりに使える便利な簡略形です。

(putc char stream)

ストリーム stream に文字 char を出力します。U。

(putenv setting)

"key=value"の形の setting によって、 現プロセスや後続する子プロセスから getenv関数で取得できる新しい環境束縛を作成するか、既存の束縛を更新します。 U。

(putprop object value key)

実装されていません。

(puts string stream)

ストリーム stream に文字列 string を出力します。U。

(qsort list predicate-fcn access-fcn)

リスト list の要素に対して再帰的なクイックソートアルゴリズムを実装したものです。 比較はアクセス関数 access-fcn を起動した結果に述語関数 predicate-fcn を適用して行います。


結果
(qsort '(3 1 5 4 2) <) (1 2 3 4 5)
(qsort '((3 a) (2 b)) < car) ((2 b) (3 a))

(quit)

読込み-評価-出力ループを抜けます。 通常は siod のメインプログラムを終了することになりますが、 libsiod の機能を使用している他の C プログラムの場合はそうならないこともあります。

(quote x)

評価をしないで x を返す特殊形式です。ふつう短縮形で 'x と書きます。

(rand modulus)

0 から modulus - 1 までの乱数を計算します。 Cライブラリの rand を使います。

(random modulus)

0 から modulus - 1 までの乱数を計算します。 Cライブラリの random を使います。

(read stream)

ストリーム stream から文字を読み込み、 構文解析された標準の式または (eof-val) を返します。

(read-from-string string)

文字列中の文字に対して read を行います。

(readdir directory-stream)

ディレクトリストリームから次のエントリの名前を返します。 残りがない場合は、( )を返します。

(readline stream)

ストリームから一行分の文字を読み込みます。ファイルの終りでは ( ) を返します。 文字列には終端の改行は含まれません。通常はその方が便利です。 例えば、次の手続きはタブ区切りの表計算ファイルを読み込みます:

(define (load-spread-sheet filename)
(if (>= (verbose) 2)
(writes nil ";; loading spread sheet " filename "\n"))
(let ((result nil)
(line nil)
(f (and (not (equal? filename "-")) (fopen filename "r"))))
(while (set! line (readline f))
(set! result (cons (strbreakup line "\t") result)))
(and f (fclose f))
(nreverse result)))

(readlink path)

path 位置のシンボリックリンクの内容を返します。U。

(realtime)

現在の実時間の秒数を倍精度浮動少数点数表現で返します。 ふつうミリ秒程度の精度です。

(rename from-path to-path)

ファイルシステム中のディレクトリやファイルの名前を変えます。U。

(require path)

"*" + path + "-loaded*" と連結した変数名を計算し、 この変数が真に束縛されていないときだけ (load path nil t) を呼出します。 ファイルをロードしたら、変数を真に設定します。 これがファイルを一度だけロードすることを保証する正しい作法です。

(require-so path)

"init_" + path と連結した変数名を計算し、 この変数が真に束縛されていないときだけ (load-so path) を呼出します。 共有ライブラリをロードしたら、変数を真に設定します。 これが共有ライブラリを一度だけロードすることを保証する正しい作法です:

(require-so (so-ext 'name))

(rest x)

リスト x の残りを返します。つまり、cdr です。

(reverse x)

リスト x の逆順の要素を持つ新しいリストを返します。

(rld-pathnames)

現在のプロセスがロードした共有ライブラリを表すパス名のリストを返します。

(rmdir path)

path で指定されたディレクトリエントリを削除します。U。

(runtime)

現在の読込み-評価-出力ループのサイクルの間に cpu が使用した秒数と、その cpu 時間中の ガベージ・コレクションに要した部分のリストを返します。

(save-forms filename forms how)

形式 forms をファイルに出力します。 how は、"w" (デフォルト)または "a"で、"a"はファイルへの追加になります。

(sdatref spec data)

mkdatref が %%closure-code として使用します。

(set! variable value)

value 副形式を評価して値を取得し、 変数 variable に値を代入する特殊形式です。

(set-car! cons-cell value)

cons-cell オブジェクトの car が value を指すように変更します。

(set-cdr! cons-cell value)

cons-cell オブジェクトの cdr が value を指すように変更します。

(set-eval-history length circular-flag)

指定した長さのリストを生成して *eval-history-ptr* と *eval-history* に束縛します。 フラグを真に設定するとリストは循環的になります。 次を試してみてください:

(define (fib x) (if (< x 2) x (+ (fib (- x 1)) (fib (- x 2)))))

(set-eval-history 200)

(fib 10)

(mapcar (lambda (x) (if (pair? x) (car x) x)) *eval-history*)

(set-symbol-value! symbol value env)

環境 env 中で指定されたシンボル symbol に対する値セルの位置を見つけ出し、 value をセットします。

(setprop obj key value)

実装されていません。

(setpwent)

/etc/passwdファイルに対するポインタをリセットします。U。

(setuid x)

プロセスのユーザid を設定します。U。

(sin x)

角度 x の正弦関数をラジアンで計算します。

(siod-lib)

siod ライブラリのディレクトリの設定を返します。

(sleep n)

n秒スリープします。システムによっては n に小数も使用できます。

(so-ext path)

共有ライブラリにファイル拡張子つきのパスを追加します。

(sqrt x)

x の平方根を計算します。

(srand seed)

rand関数のためにアルゴリズムの種 seed を再設定します。U。

(srandom seed)

random関数のためにアルゴリズムの種 seed を再設定します。U。

(stat path)

ファイルの状態に関する情報を記述した連想配列を返します。 パスがアクセスできない場合は ( ) を返します。 アクセスできない理由を返すのに (last-c-error) が使えます。

(strbreakup string sep)

セパレータ sep に従って分割された文字列 string のリストを返します。

(strbreakup "x=y&z=3" "&") => ("x=y" "z=3")

(strcat str1 str2)

バイトの値が 0 になっている位置で決まる str1 の現在アクティブな終端から始めて、 str1 に文字列 str2 をコピーします。 str1 に十分な空きが無い場合は error を呼び出します。U。

(strcmp str1 str2)

str1 と str2 が等し(equal)ければ 0、 str1 がアルファベット順で str2 よりも小さければ -1、 そうでなければ 1 を返します。U。

(strcpy str1 str2)

str1 に str2 をコピーします。 十分な空きが無ければ error を呼び出します。U。

(strcspn str indicators)

indicators の集合中に見つかった str 中の最初の文字の位置を返します。 見つからなかった場合は文字列の長さを返します。

(strftime format-string alist)

連想配列 alist(デフォルトは現在時刻)から細切れの日付/時刻情報を取り出し、 書式文字列 format-string を使用して文字列を計算します。U。例えば:

(strftime "%B" '((mon . 3))) => "April"

(string->number str radix)

文字列を指定された基数 radix の数値に変換します。

(string-append str1 str2 str3 ...)

全ての文字列引数を連結したものからなる新しい文字列を返します。

(string-dimension str)

文字列配列の取り得る最大の長さを返します。

(string-downcase str)

str の全ての文字を小文字に変換した新しい文字列を返します。

(string-length str)

str のアクティブな文字列長を返します。

(string-lessp str1 str2)

str1 がアルファベット順で str2 より小さいとき真を返します。

(string-search key str)

指定した文字列中の key のインデックス位置を返します。 見つからなければ ( ) を返します。

(string-trim str)

指定された文字列の左右の空白を取り除いて作った新しい文字列を返します。

(string-trim-left str)

string-trimと似ていますが、左側に対してだけ行います。

(string-trim-right str)

string-trimと似ていますが、右側に対してだけ行います。

(string-upcase str)

全ての小文字を大文字に変換した新しい文字列を返します。

(string? x)

x が文字列のとき真を返します。

(strptime str format alist)

str を format に従って構文解析し、値を連想配列 alist にマージします。U。

 (cdr (assq 'mon (strptime "March" "%B"))) => 2

(strspn str indicators)

idicators集合中に見つからない str中の最初の文字の位置を返します。 見つからなければ str の長さを返します。U。例えば:

(define (string-trim-left x)
(substring x (strspn x " \t")))

(subset pred-fcn list)

その要素が pred-fcn を満足するようなリストのサブセットを返します。例えば:

(subset number? '(1 b 2 c)) => (1 2)

(substring str start end)

start で始まり end で終わる str の部分からなる新しい文字列を返します。 したがって、新しい文字列の長さは end - start です。

(substring-equal? str str2 start end)

str2 の start から end の部分文字列が str と等しい(equal)かどうかを決めるため の効率のいい方法です。

(swrite stream table form)

これは ftp://ftp.std.com/pub/gjc/www95-paper.html で説明されている write-smart-html プロシージャと同じです。

(sxhash data modulus)

指定された modulus に関してデータの再帰的ハッシュを計算します。

(symbol-bound? symbol env)

環境 env でシンボル symbol が束縛されているとき真を返します。

(symbol-value symbol env)

環境 env におけるシンボル symbol の値を返します。

(symbol? x)

x がシンボルのとき真を返します。

(symbolconc arg1 arg2 ...)

引数に string-append を適用した結果に対して intern を呼び出すより、 若干効率的です。 このプロシージャは SIOD の文字列データ型が実際に使えることを当てにしています。

(symlink contents-path link-path)

content-path を指すディレクトリエントリ link-path を作成します。U。

(system arg1 arg2 ...)

文字列引数を繋いでコマンドを作り、オペレーティングシステムがそれを実行します。 U。

t

真値に束縛されています。この変数のグローバル値を変更しないで下さい。

(tan x)

指定した角度 x の正接をラジアンで計算します。

(the-environment)

現在の字句スコープに関するインタープリタ環境の構造を返す特殊形式です。

(trace fcn1 fcn2 ...)

クロージャ・オブジェクトを修正して、 指定した解釈対象のプロシジャをトレースします。

(trunc x)

x の整数部を返します。

(typeof x)

オブジェクト x のタイプを記述するシンボルまたは 整数のタイプ・コードを返します。

(unbreakupstr list sep)

strbreakup の逆です。 以下の例はリストのリストをタブ区切りの表計算データとして保存します:

(define (save-spread-sheet filename data)
(if (>= (verbose) 2)
(writes nil ";; saving spread sheet " filename "\n"))
(let ((result data)
(f (and (not (equal? filename "-")) (fopen filename "w"))))
(while result
(writes f (unbreakupstr (car result) "\t") "\n")
(set! result (cdr result)))
(and f (fclose f))))

(ungetc char stream)

次に getc 呼び出すときのために char を stream に戻します。

(unix-ctime x)

整数時間 x を文字列に変換します。U。

(unix-time)

グリニッジ標準時 1970/01/01 から現在までの秒数を返します。U。

(unix-time->strtime x)

いくつかの状況において便利な、"YYYYMMDDHHmmSSdd" 形式の文字列を返します。 strftime プロシージャが使えることを当てにしています。

(unlink path)

ディレクトリエントリから指定されたエントリを削除します。U。

(untrace fcn1 fcn2 ...)

指定された手続きのトレースを解除します。

(url-decode str)

str の url デコード操作を行います。 使用例は people.delphi.com/gjc/chtml.html を参照して下さい。

(url-encode str)

str 文字列中で url に出現してはならない文字を突き止め、 %NN 16進表現に変換した新しい文字列を返します。 スペースは "+" 記号に変換されます。

(utime path modification-time access-time)

ファイルの変更時刻とアクセス時刻を設定します。U。

(verbose arg)

SIOD の饒舌レベルを指定されたレベルに設定します。 レベルを指定しない場合は、現在のレベルを返します。

Table C.1 Verbose の引数

饒舌レベル

システムに対する効果

0 メッセージ無し
1 エラーメッセージのみ
2 起動メッセージ、プロンプト、評価タイミング
3 ファイルのロードと保存のメッセージ
4(デフォルト) ガベージ・コレクション メッセージ
5 ファイルからロードしたデータやデータベースから取得したデータを表示する

(wait pid options)

waitpid 関数を呼び、子プロセスを待ちます。 options は (WCONTINUED WNOWAIT WNOHANG WUNTRACED) を含むリストです。 プロセス pid と最終終了状態からなるリストを返します。 fork-test.scm や http-stress.scm のモジュールに使用例があります。U。

(while pred-form form1 form2 ...)

述語形式 pred-form の評価が真のとき、他の全ての形式を評価し、またループします。

(writes stream data1 data2 data3 ...)

data 引数をストリーム stream に出力します。 文字列や特殊文字にクォートをつけません。


 
 

prevcontentnext


Frozenriver Digital Design
http://www.frozenriver.nu
Voice: +46 (0)31 474356
Fax: +46 (0)31 493833
support@frozenriver.com
Publisher Coriolis
http://www.coriolis.com