Cに馴染んだプログラマのために、Cのオペレータとライブラリ関数から Schemeの関数への対応表を示しておきます。
+
R7RS の算術演算手続き +
。数値の演算参照。
+=
Gauche の inc!
マクロ。代入参照。
-
R7RS の算術演算手続き -
。数値の演算参照。
-=
Gauche の dec!
マクロ。代入参照。
->
Gauche の slot-ref
が近いものです。インスタンスへのアクセス参照。
* (二項演算子)
R7RS の算術演算手続き *
。数値の演算参照。
* (単項演算子)
同等の手続きはありません。Scheme には明示的ポインタ表記はありません。
*=
同等の手続きはありません。
/
Cでは引数の型によって二つの異なる意味を持つオペレータです。
実数の除算には/
を、整数除算の商を求めるにはquotient
を使います。
数値の演算参照。
/=
同等の手続きはありません。
& (二項演算子)
Gauche の logand
。scheme.bitwise
- R7RSビット演算参照。
& (単項演算子)
同等の手続きはありません。Scheme には明示的ポインタ表記はありません。
&&
R7RS の構文 and
。条件式参照。
&=
同等の手続きはありません。
|
Gauche の logior
。scheme.bitwise
- R7RSビット演算参照。
||
R7RS の構文 or
。条件式参照。
|=
同等の手続きはありません。
^
Gauche の logxor
。scheme.bitwise
- R7RSビット演算参照。
=
R7RS の構文 set!
。代入参照。
==
R7RS の同等性手続き eq?
、eqv?
および equal?
。
等価参照。
<
<=
R7RS の算術演算手続き <
および <=
。
数値の比較参照。C の演算子とちがい、Scheme のものは
推移的なものです。
<<
Gauche の ash
。scheme.bitwise
- R7RSビット演算参照。
<<=
同等の手続きはありません。
>
>=
R7RS の算術演算手続き <
および <=
。
数値の比較参照。C の演算子とちがい、Scheme のものは
推移的なものです。
>>
Gauche の ash
。scheme.bitwise
- R7RSビット演算参照。
>>=
同等の手続きはありません。
%
R7RS の演算子 modulo
および remainder
。数値の演算参照。
%=
同等の手続きはありません。
[]
R7RS の vector-ref
(ベクタ参照) が近いものです。あるいは、
Gauche のジェネリック関数 ref
(gauche.sequence
- シーケンスフレームワーク参照)が、
任意の並び用になっています。
.
Gauche の slot-ref
がこれに近いものです。インスタンスへのアクセス参照。
~
Gauche の lognot
。scheme.bitwise
- R7RSビット演算参照。
~=
同等の手続きはありません。
!
R7RS の手続き not
。論理値参照。
!=
同等の手続きはありません。
abort
Gauche の sys-abort
。プログラムの終了参照。
abs
R7RS の abs
。数値の演算参照。
access
Gauche の sys-access
。ファイルの状態参照。
acos
R7RS の acos
。数値の演算参照。
alarm
Gauche の sys-alarm
。その他のシステムコール参照。
asctime
Gauche の sys-asctime
。時間参照。
asin
R7RS の asin
。数値の演算参照。
assert
Gauche には同等の関数はありません。
atan
atan2
R7RS の atan
。数値の演算参照。
atexit
Gauche には同等の関数はありませんが、exit
が呼ばれたとき
アクティブな動的ハンドラの「事後」サンクが呼ばれます。
プログラムの終了 および 継続 参照。
atof
atoi
atol
string->number
が使えます。数値の変換参照。
bsearch
SRFI-133のvector-binary-search
が使えます。
scheme.vector
- R7RSベクタ参照。
calloc
Scheme ではメモリ割当は自動的に処理されます。
ceil
R7RS の ceiling
。数値の演算参照。
cfgetispeed
cfgetospeed
cfsetispeed
cfsetospeed
Gauche の sys-cfgetispeed
、sys-cfgetospeed
、
sys-cfsetispeed
、sys-cfsetospeed
。gauche.termios
- 端末の制御参照。
chdir
Gauche の sys-chdir
。他のファイル操作参照。
chmod
Gauche の sys-chmod
。ファイルの状態参照。
chown
Gauche の sys-chown
。ファイルの状態参照。
clearerr
未サポート。
clock
Gauche には同等の関数はありません。sys-times
を使って、
CPUタイムに情報を得ることができます。
close
ファイルディスクリプタを直接クローズすることはできませんが、
close-input-port
あるいは close-output-port
を使うと、
元になるファイルはクローズされます。
いくつかのポートに関連する関数、たとえば、call-with-output-file
などは、操作終了時に自動的にファイルをクローズします。
また、それを支配しているポートがGCされたときにクローズされます。
ポート共通の操作参照。
closedir
Gauche には同等の関数はありません。sys-readdir
を使うと
ディレクトリの内容を一度に読むことができます。
ディレクトリ 参照。
cos
cosh
cos
および cosh
。数値の演算 参照。
creat
デフォルトでは、書き込みのためにファイルをオープンしたときに、暗黙のうちに ファイルが作成されます。ファイル作成のより詳しい制御については ファイルポート を参照してください。
ctermid
Gauche の sys-ctermid
。システムへの問い合わせ 参照。
ctime
Gauche の sys-ctime
。時間 参照。
cuserid
同等の関数はありません。これは新しい POSIX からは削除されています。
別法として、sys-getuid
といっしょに、sys-getlogin
あるいは sys-getpwuid
などの関数が使えます。
difftime
Gauche の sys-difftime
。時間 参照。
div
R7RS の quotient
および remainder
を使えます。
数値の演算 参照。
dup
dup2
直接はサポートされていませんが、port-fd-dup!
が使えます。
execl
execle
execlp
execv
execve
execvp
Gauche の sys-exec
。プロセス管理 参照。
より高水準のインタフェースについては gauche.process
- 高レベルプロセスインタフェース 参照。
exit
_exit
必要なことに応じて、exit
あるいは sys-exit
を使いましょう。
プログラムの終了 参照。
exp
R7RS の exp
。数値の演算 参照。
fabs
R7RS の abs
。数値の演算 参照。
fclose
ファイルストリームを直接クローズすることはできませんが、
close-input-port
あるいは close-output-port
を使うと、
元になるファイルはクローズされます。
いくつかのポートに関連する関数、たとえば、call-with-output-file
などは、操作終了時に自動的にファイルをクローズします。
また、それを支配しているポートがGCされたときにクローズされます。
ポート共通の操作参照。
fcntl
gauche.fcntl
モジュールで、sys-fcntl
として実装されています。
gauche.fcntl
- 低レベルファイル操作 参照。
fdopen
Gauche の open-input-fd-port
あるいは open-output-fd-port
。
ファイルポート 参照。
feof
同等の操作はありませんが、入力ポートがEOFに達したどうか調べるには
peek-char
やpeek-byte
が使えます。
データの読み込み参照。
ferror
未サポート。
fflush
Gauche の flush
。出力 参照。
fgetc
read-char
あるいは read-byte
を使いましょう。入力 参照。
fgetpos
Gauche の port-tell
を使いましょう。(ポート共通の操作参照。)
fgets
read-line
あるいは read-string
を使いましょう。入力 参照。
fileno
port-file-number
。ポート共通の操作 参照。
floor
R7RS の floor
。数値の演算 参照。
fmod
Gauche の fmod
。
fopen
この操作に対応するのは、R7RS の open-input-file
あるいは
open-output-file
です。ファイルポート 参照。
fork
Gauche の sys-fork
。プロセス管理 参照。
forkpty
sys-forkpty
を使いましょう。gauche.termios
- 端末の制御 参照。
fpathconf
未サポート。
fprintf
直接はサポートされていませんが、Gauche の format
は
似たような機能を提供しています。出力参照。
SLIB は printf
の実装を持っています。
fputc
write-char
あるいは write-byte
を使いましょう。出力参照。
fputs
display
を使いましょう。出力 参照。
fread
直接はサポートされていません。
バイナリの数値を読む場合はbinary.io
- バイナリI/Oを参照のこと。
バイトのチャンクで読みたければ、
read-uvector!
が使えるでしょう (ユニフォームベクタのブロック入出力参照)。
free
Scheme では必要がありません。
freopen
未サポート。
frexp
Gauche の frexp
。
fscanf
サポートしていません。一般的にはパーザを書かねばなりません。
データを S式で保持しているなら、read
が使えます。
構文がごく単純なら、srfi.14
(srfi.13
- 文字列ライブラリ) の
string-tokenize
や、正規表現 (正規表現) が使えるでしょう。
fseek
Gauche の port-seek
(ポート共通の操作参照)を使いましょう。
fsetpos
Gauche の port-seek
(ポート共通の操作参照)を使いましょう。
fstat
Gauche の sys-stat
。ファイルの状態 参照。
ftell
Gauche の port-tell
(ポート共通の操作参照)を使いましょう。
fwrite
直接はサポートされていません。
バイナリの数値を書き出すのなら、binary.io
- バイナリI/O参照のこと。
バイト列のチャンクを書き出しすなら、
単に display
を使うか、write-uvector
が使えます
(ユニフォームベクタのブロック入出力参照)。
getc
getchar
read-char
あるいは read-byte
を使いましょう。入力参照。
getcwd
Gauche の sys-getcwd
。システムへの問い合わせ 参照。
getdomainname
Gauche の sys-getdomainname
。システムへの問い合わせ 参照。
getegid
Gauche の sys-getegid
。システムへの問い合わせ 参照。
getenv
Gauche の sys-getenv
。環境の問い合わせ 参照。
geteuid
Gauche の sys-geteuid
。システムへの問い合わせ 参照。
gethostname
Gauche の sys-gethostname
。システムへの問い合わせ 参照。
getgid
Gauche の sys-getgid
。システムへの問い合わせ 参照。
getgrgid
getgrnam
Gauche の sys-getgrgid
および sys-getgrnam
。
Unixのグループとユーザ 参照。
getgroups
Gauche の sys-getgroups
。システムへの問い合わせ参照。
getlogin
Gauche の sys-getlogin
。システムへの問い合わせ参照。
getpgrp
Gauche の sys-getpgrp
。システムへの問い合わせ 参照。
getpid
getppid
Gauche の sys-getpid
。システムへの問い合わせ 参照。
getpwnam
getpwuid
Gauche の sys-getpwnam
および sys-getpwuid
。
Unixのグループとユーザ 参照。
gets
read-line
または read-string
を使いましょう。入力参照。
gettimeofday
Gauche の sys-gettimeofday
。時間 参照。
getuid
Gauche の sys-getuid
。システムへの問い合わせ 参照。
gmtime
Gauche の sys-gmtime
。時間 参照。
isalnum
直接はサポートされていませんが、R7RS の char-alphabetic?
および
char-numeric?
が使えます。文字 参照。また、文字集合も
使えます。文字集合、scheme.charset
- R7RS文字集合 参照。
isalpha
R7RS の char-alphabetic?
。文字 参照。また、
文字集合 および scheme.charset
- R7RS文字集合 も参照してください。
isatty
Gauche の sys-isatty
。他のファイル操作 参照。
iscntrl
直接はサポートされていませんが、srfi.14
で
(char-set-contains? char-set:iso-control c)
が使えます。
scheme.charset
- R7RS文字集合 参照。
isdigit
R7RS の char-numeric?
。文字 参照。
srfi.14
で、(char-set-contains? char-set:digit c)
も
使えます。scheme.charset
- R7RS文字集合 参照。
isgraph
直接はサポートされていませんが、srfi.14
で
(char-set-contains? char-set:graphic c)
が使えます。
scheme.charset
- R7RS文字集合 参照。
islower
R7RS の char-lower-case?
。文字 参照。
srfi.14
で (char-set-contains? char-set:lower-case c)
も使えます。scheme.charset
- R7RS文字集合 参照。
isprint
直接はサポートされていませんが、srfi.14
で
(char-set-contains? char-set:printing c)
が使えます。
scheme.charset
- R7RS文字集合 参照。
ispunct
直接はサポートされていませんが、srfi.14
で
(char-set-contains? char-set:punctuation c)
が使えます。
scheme.charset
- R7RS文字集合 参照。
isspace
R7RS の char-whitespace?
。文字 参照。
srfi.14
で (char-set-contains? char-set:whitespace c)
も使えます。scheme.charset
- R7RS文字集合 参照。
isupper
R7RS の char-upper-case?
。文字 参照。
srfi.14
で (char-set-contains? char-set:upper-case c)
も使えます。scheme.charset
- R7RS文字集合 参照。
isxdigit
直接はサポートされていませんが、srfi.14
で
(char-set-contains? char-set:hex-digit c)
が使えます。
scheme.charset
- R7RS文字集合 参照。
kill
Gauche の sys-kill
。シグナル 参照。
labs
R7RS の abs
。数値の演算 参照。
ldexp
Gauche の ldexp
。
ldiv
R7RS の quotient
および remainder
を使いましょう。
数値の演算参照。
link
Gauche の sys-link
。ディレクトリ操作参照。
localeconv
Gauche の sys-localeconv
。ロケール 参照。
localtime
Gauche の sys-localtime
。時間 参照。
log
R7RS の log
。数値の演算 参照。
log10
直接はサポートされていません。
log10(z)
≡ (/ (log z) (log 10))
です。
longjmp
R7RS の call/cc
が類似(上位)のメカニズムを提供しています。
継続 参照。
lseek
Gauche の port-seek
(ポート共通の操作参照) を使いましょう。
malloc
Scheme では必要ありません。
mblen
mbstowcs
mbtowc
Gauche ではマルチバイト文字列を内部的に処理しますので、一般的には
文字列がマルチバイトであるかどうかを気にする必要はありません。
string-length
は常に、サポートされているエンコーディングの
文字列に対して、文字数を返します。文字のエンコーディング変換を
したいのであれば、gauche.charconv
- 文字コード変換 を参照してください。
memcmp
memcpy
memmove
memset
同等の関数はありません。
mkdir
Gauche の sys-mkdir
。ディレクトリ操作 参照。
mkfifo
Gauche の sys-mkfifo
。
mkstemp
Gauche の sys-mkstemp
。ディレクトリ操作 参照。
tmpnam の代りにこちらを使いましょう。
mktime
Gauche の sys-mktime
。時間 参照。
modf
Gauche の modf
。
open
直接はサポートされていません。この操作に対応するのな
R7RS の open-input-file
または open-output-file
です。
ファイルポート 参照。
opendir
直接はサポートされていません。
ディレクトリのエントリをいちどに読むには sys-readdir
が使えます。ディレクトリ 参照。
openpty
sys-openpty
を使いましょう。gauche.termios
- 端末の制御 参照。
pathconf
サポートしません。
pause
Gauche の sys-pause
。その他のシステムコール 参照。
perror
Gauche には同等の関数はありません。システムコールは一般的には error
(<system-error>
) を投げます。これには、失敗した理由の説明が含まれて
います。
pipe
Gauche の sys-pipe
。他のファイル操作 参照。
pow
R7RS の expt
。数値の演算 参照。
printf
直接はサポートされていませんが、Gauche の format
は類似の機能を
提供しています。出力 参照。SLIB には printf
の実装があります。
putc
putchar
write-char
または write-byte
を使いましょう。出力 参照。
puts
display
を使いましょう。出力 参照。
qsort
Gauche の sort
および sort!
はリストをソートする便利な方法を
提供しています。ソートとマージ 参照。
raise
Gauche には同等の関数はありません。Scheme の関数 raise
(SRFI-18)
は例外を発生させます。シグナル SIG
を現在のプロセスに送るには
(sys-kill (sys-getpid) SIG)
が使えます。
rand
直接はサポートされていませんが、多くのプラットフォーム上で、sys-random
のような、よりよい RNG が利用可能です。その他のシステムコール 参照。
read
直接はサポートされていませんが、
read-uvector
あるいは
read-uvector!
(ユニフォームベクタのブロック入出力参照)が使えます。
readdir
直接はサポートされていません。Gauche の sys-readdir
は
指定のディレクトリを一度に読みます。ディレクトリ 参照。
readlink
Gauche の sys-readlink
。ディレクトリ操作 参照。
この関数はシンボリックリンクをサポートしているシステム上で利用可能です。
realloc
Scheme では必要ありません。
realpath
Gauche の sys-normalize-pathname
あるいは sys-realpath
。
パス名参照。
remove
Gauche の sys-remove
。ディレクトリ操作参照。
rename
Gauche の sys-rename
。ディレクトリ操作参照。
rewind
直接はサポートされませんが、port-seek
が代わりに使えます。
ポート共通の操作参照。
rewinddir
直接はサポートされていません。
ディレクトリエントリを一度に読むには sys-readdir
が使えます。
ディレクトリ参照。
rmdir
Gauche の sys-rmdir
。ディレクトリ操作参照。
scanf
サポートしていません。一般的にはパーザを書かねばなりません。
データを S式で保持できるなら、read
が使えます。
構文がごく単純なら、srfi.14
(srfi.13
- 文字列ライブラリ) の
string-tokenize
や、正規表現 (正規表現)
が使えるでしょう。
select
Gauche の sys-select
。I/Oの多重化参照。
setbuf
必要ありません。
setgid
Gauche の sys-getgid
。
setjmp
R7RS の call/cc
が類似(上位)のメカニズムを提供しています。
継続 参照。
setlocale
Gauche の sys-setlocale
。ロケール参照。
setpgid
Gauche の sys-setpgid
。システムへの問い合わせ参照。
setsid
Gauche の sys-setsid
。システムへの問い合わせ参照。
setuid
Gauche の sys-setuid
。システムへの問い合わせ参照。
setvbuf
必要ありません。
sigaction
シグナルハンドラを設定するには、set-signal-handler!
が使えます。
シグナルの処理参照。
sigaddset
sigdelset
sigemptyset
sigfillset
Gauche の sys-sigset-add!
および sys-sigset-delete!
。
シグナルとシグナルセット参照。
sigismember
未サポート。
siglongjmp
R7RS の call/cc
が類似(上位)のメカニズムを提供しています。
継続 参照。
signal
シグナルハンドラを設定するのには、with-signal-handlers
が使えます。
シグナルの処理 参照。
sigpending
未サポート
sigprocmask
シグナルマスクは内部的に処理されます。シグナルの処理参照。
sigsetjmp
R7RS の call/cc
が類似(上位)のメカニズムを提供しています。
継続 参照。
sigsuspend
Gauche の sys-sigsuspend
。シグナルのマスクと待機参照。
sigwait
Gauche の sys-sigwait
。シグナルのマスクと待機参照。
sin
sinh
sin
および sinh
を使いましょう。数値の演算参照。
sleep
Gauche の sys-sleep
。その他のシステムコール参照。
sprintf
直接はサポートされていませんが、Gauche の format
は類似の機能を
提供しています。出力 参照。SLIB には printf
の実装があります。
sqrt
R7RS の sqrt
。数値の演算参照。
srand
直接はサポートされていませんが、多くのプラットフォーム上で、sys-random
のような、よりよい RNG が利用可能です。その他のシステムコール 参照。
また、math.mt-random
はさらに優れたRNGを提供します
(math.mt-random
- Mersenne Twister乱数発生器参照)。
sscanf
サポートしていません。一般的にはパーザを書かねばなりません。
データを S式で保持できるなら、read
が使えます。
構文がごく単純なら、srfi.14
(srfi.13
- 文字列ライブラリ) の
string-tokenize
や、正規表現 (正規表現)
が使えるでしょう。
stat
Gauche の sys-stat
。ファイルの状態参照。
strcasecmp
R7RS の string-ci=?
および、その他の比較関数。
文字列の色々な比較参照。
strcat
R7RS の string-append
。文字列を扱うその他の手続き参照。
strchr
SRFI-13 の string-index
。 文字列の探索参照。
strcmp
R7RS の string=?
および、その他の比較関数。
文字列の色々な比較参照。
strcoll
未サポート。
strcpy
R7RS の string-copy
。文字列を扱うその他の手続き参照。
strcspn
直接はサポートされていませんが、文字集合とともに、SRFI-13 の
string-skip
が使えます。文字列の探索参照。
strerror
Gaucheのsys-strerror
。 システムへの問い合わせ参照。
strftime
Gauche の sys-strftime
。時間参照。
strlen
R7RS の string-length
。文字列のアクセスと変更参照。
strncat
直接はサポートされていませんが、string-append
および
substring
が使えます。
strncasecmp
SRFI-13 の string-compare-ci
は非常に柔軟な(しかし、使うのは
多少難しい)機能を提供しています。文字列の色々な比較参照。
ふたつの文字列の固定長の接頭辞が一致しているかどうかをチェックしたい
だけなら、SRFI-13 の string-prefix-ci?
が使えます。
strncmp
SRFI-13 の string-compare-ci
は非常に柔軟な(しかし、使うのは
多少難しい)機能を提供しています。文字列の色々な比較参照。
ふたつの文字列の固定長の接頭辞が一致しているかどうかをチェックしたい
だけなら、SRFI-13 の string-prefix-ci?
が使えます。
文字列のプリフィックスとサフィックス参照。
strncpy
SRFI-13 の substring
。文字列を扱うその他の手続き参照。
strpbrk
直接はサポートされていませんが、文字集合と SRFI-13 の string-skip
が使えます。文字列の探索参照。
strrchr
SRFI-13 の string-index-right
。文字列の探索参照。
strspn
直接はサポートされていませんが、文字集合と SRFI-13 の string-index
が使えます。文字列の探索参照。
strstr
SRFI-13 の string-contains
。文字列の探索参照。
strtod
R7RS の string->number
が使えます。数値の変換参照。
strtok
SRFI-13 の string-tokenize
。他の文字列操作参照。
strtol
strtoul
R7RS の string->number
が使えます。数値の変換参照。
strxfrm
未サポート。
symlink
Gauche の sys-symlink
。ディレクトリ操作参照。
この関数は、シンボリックリンクをサポートしているシステム上で利用可能です。
sysconf
未サポート。
system
Gauche の sys-system
。プロセス管理参照。
一般的にはプロセスライブラリ(gauche.process
- 高レベルプロセスインタフェース)
を使うことを推奨します。
tan
tanh
R7RS の tan
および Gauche の tanh
。数値の演算参照。
tcdrain
tcflow
tcflush
tcgetattr
tcgetpgrp
tcsendbreak
tcsetattr
tcsetpgrp
対応する関数はそれぞれ、sys-tcdrain
、sys-tcflow
、
sys-tcflush
、sys-tcgetattr
、sys-tcgetpgrp
、
sys-tcsendbreak
、sys-tcsetattr
、sys-tcsetpgrp
です。
gauche.termios
- 端末の制御参照。
time
Gauche の sys-time
。 時間参照。
times
Gauche の sys-times
。システムへの問い合わせ参照。
tmpfile
厳密には、サポートしません。sys-mkstemp
を見てください。
ディレクトリ操作参照。
tmpnam
Gauche の sys-tmpnam
。この関数は POSIX にあるので提供されていますが、
潜在的なセキュリティリスクがあるため、利用はおすすめできません。
代りに sys-mkstemp
を使いましょう。ディレクトリ操作参照。
tolower
toupper
R7RS の char-upcase
および char-downcase
。文字参照。
ttyname
Gauche の sys-ttyname
。他のファイル操作参照。
tzset
未サポート。
umask
Gauche の sys-umask
。ディレクトリ操作参照。
uname
Gauche の sys-uname
。システムへの問い合わせ参照。
ungetc
直接はサポートされません。プッシュしなおす代りに、peek-char
をつかって
先読みしましょう。
unlink
Gauche の sys-unlink
。ディレクトリ操作参照。
utime
Gauche の sys-utime
。ファイルの状態参照。
va_arg
va_end
va_start
Scheme は可変長引数を自然に処理できますので、必要ありません。
vfprintf
vprintf
vsprintf
直接はサポートされていませんが、Gauche の format
は類似の機能を
提供しています。出力 参照。SLIB には printf
の実装があります。
wait
Gauche の sys-wait
。プロセス管理参照。
waitpid
Gauche の sys-waitpid
。プロセス管理参照。
wcstombs
wctomb
Gauche はマルチバイト文字列を内部的に処理します。それゆえ、一般的には
文字列がマルチバイトであるかどうかを気にする必要はありません。
string-length
は常にサポートされているエンコーディングでの文字列の
文字数を返します。文字エンコーディングを変換したければ、
gauche.charconv
- 文字コード変換を参照してください。
write
R7RS の display
(see 出力)。
あるいは write-uvector
(ユニフォームベクタのブロック入出力参照)。