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。論理値参照。
!=同等の手続きはありません。
abortGauche の sys-abort。プログラムの終了参照。
absR7RS の abs。数値の演算参照。
accessGauche の sys-access。ファイルの状態参照。
acosR7RS の acos。数値の演算参照。
alarmGauche の sys-alarm。その他のシステムコール参照。
asctimeGauche の sys-asctime。時間参照。
asinR7RS の asin。数値の演算参照。
assertGauche には同等の関数はありません。
atanatan2R7RS の atan。数値の演算参照。
atexitGauche には同等の関数はありませんが、exit が呼ばれたとき
アクティブな動的ハンドラの「事後」サンクが呼ばれます。
プログラムの終了 および 継続 参照。
atofatoiatolstring->number が使えます。数値の変換参照。
bsearchSRFI-133のvector-binary-searchが使えます。
scheme.vector - R7RSベクタ参照。
callocScheme ではメモリ割当は自動的に処理されます。
ceilR7RS の ceiling。数値の演算参照。
cfgetispeedcfgetospeedcfsetispeedcfsetospeedGauche の sys-cfgetispeed、sys-cfgetospeed、
sys-cfsetispeed、sys-cfsetospeed。gauche.termios - 端末の制御参照。
chdirGauche の sys-chdir。他のファイル操作参照。
chmodGauche の sys-chmod。ファイルの状態参照。
chownGauche の sys-chown。ファイルの状態参照。
clearerr未サポート。
clockGauche には同等の関数はありません。sys-times を使って、
CPUタイムに情報を得ることができます。
closeファイルディスクリプタを直接クローズすることはできませんが、
close-input-port あるいは close-output-port を使うと、
元になるファイルはクローズされます。
いくつかのポートに関連する関数、たとえば、call-with-output-file
などは、操作終了時に自動的にファイルをクローズします。
また、それを支配しているポートがGCされたときにクローズされます。
ポート共通の操作参照。
closedirGauche には同等の関数はありません。sys-readdir を使うと
ディレクトリの内容を一度に読むことができます。
ディレクトリ 参照。
coscoshcos および cosh。数値の演算 参照。
creatデフォルトでは、書き込みのためにファイルをオープンしたときに、暗黙のうちに ファイルが作成されます。ファイル作成のより詳しい制御については ファイルポート を参照してください。
ctermidGauche の sys-ctermid。システムへの問い合わせ 参照。
ctimeGauche の sys-ctime。時間 参照。
cuserid同等の関数はありません。これは新しい POSIX からは削除されています。
別法として、sys-getuid といっしょに、sys-getlogin
あるいは sys-getpwuid などの関数が使えます。
difftimeGauche の sys-difftime。時間 参照。
divR7RS の quotient および remainder を使えます。
数値の演算 参照。
dupdup2直接はサポートされていませんが、port-fd-dup! が使えます。
execlexecleexeclpexecvexecveexecvpGauche の sys-exec。プロセス管理 参照。
より高水準のインタフェースについては gauche.process - 高レベルプロセスインタフェース 参照。
exit_exit必要なことに応じて、exit あるいは sys-exit を使いましょう。
プログラムの終了 参照。
expR7RS の exp。数値の演算 参照。
fabsR7RS の abs。数値の演算 参照。
fcloseファイルストリームを直接クローズすることはできませんが、
close-input-port あるいは close-output-port を使うと、
元になるファイルはクローズされます。
いくつかのポートに関連する関数、たとえば、call-with-output-file
などは、操作終了時に自動的にファイルをクローズします。
また、それを支配しているポートがGCされたときにクローズされます。
ポート共通の操作参照。
fcntlgauche.fcntl モジュールで、sys-fcntl として実装されています。
gauche.fcntl - 低レベルファイル操作 参照。
fdopenGauche の open-input-fd-port あるいは open-output-fd-port。
ファイルポート 参照。
feof同等の操作はありませんが、入力ポートがEOFに達したどうか調べるには
peek-charやpeek-byteが使えます。
データの読み込み参照。
ferror未サポート。
fflushGauche の flush。出力 参照。
fgetcread-char あるいは read-byte を使いましょう。入力 参照。
fgetposGauche の port-tell を使いましょう。(ポート共通の操作参照。)
fgetsread-line あるいは read-string を使いましょう。入力 参照。
filenoport-file-number。ポート共通の操作 参照。
floorR7RS の floor。数値の演算 参照。
fmodGauche の fmod。
fopenこの操作に対応するのは、R7RS の open-input-file あるいは
open-output-file です。ファイルポート 参照。
forkGauche の sys-fork。プロセス管理 参照。
forkptysys-forkpty を使いましょう。gauche.termios - 端末の制御 参照。
fpathconf未サポート。
fprintf直接はサポートされていませんが、Gauche の format は
似たような機能を提供しています。出力参照。
SLIB は printf の実装を持っています。
fputcwrite-char あるいは write-byteを使いましょう。出力参照。
fputsdisplayを使いましょう。出力 参照。
fread直接はサポートされていません。
バイナリの数値を読む場合はbinary.io - バイナリI/Oを参照のこと。
バイトのチャンクで読みたければ、
read-uvector! が使えるでしょう (ユニフォームベクタのブロック入出力参照)。
freeScheme では必要がありません。
freopen未サポート。
frexpGauche の frexp。
fscanfサポートしていません。一般的にはパーザを書かねばなりません。
データを S式で保持しているなら、read が使えます。
構文がごく単純なら、srfi.14 (srfi.13 - 文字列ライブラリ) の
string-tokenize や、正規表現 (正規表現) が使えるでしょう。
fseekGauche の port-seek(ポート共通の操作参照)を使いましょう。
fsetposGauche の port-seek(ポート共通の操作参照)を使いましょう。
fstatGauche の sys-stat。ファイルの状態 参照。
ftellGauche の port-tell(ポート共通の操作参照)を使いましょう。
fwrite直接はサポートされていません。
バイナリの数値を書き出すのなら、binary.io - バイナリI/O参照のこと。
バイト列のチャンクを書き出しすなら、
単に display を使うか、write-uvector が使えます
(ユニフォームベクタのブロック入出力参照)。
getcgetcharread-char あるいは read-byteを使いましょう。入力参照。
getcwdGauche の sys-getcwd。システムへの問い合わせ 参照。
getdomainnameGauche の sys-getdomainname。システムへの問い合わせ 参照。
getegidGauche の sys-getegid。システムへの問い合わせ 参照。
getenvGauche の sys-getenv。環境の問い合わせ 参照。
geteuidGauche の sys-geteuid。システムへの問い合わせ 参照。
gethostnameGauche の sys-gethostname。システムへの問い合わせ 参照。
getgidGauche の sys-getgid。システムへの問い合わせ 参照。
getgrgidgetgrnamGauche の sys-getgrgid および sys-getgrnam。
Unixのグループとユーザ 参照。
getgroupsGauche の sys-getgroups。システムへの問い合わせ参照。
getloginGauche の sys-getlogin。システムへの問い合わせ参照。
getpgrpGauche の sys-getpgrp。システムへの問い合わせ 参照。
getpidgetppidGauche の sys-getpid。システムへの問い合わせ 参照。
getpwnamgetpwuidGauche の sys-getpwnam および sys-getpwuid。
Unixのグループとユーザ 参照。
getsread-line または read-stringを使いましょう。入力参照。
gettimeofdayGauche の sys-gettimeofday。時間 参照。
getuidGauche の sys-getuid。システムへの問い合わせ 参照。
gmtimeGauche の sys-gmtime。時間 参照。
isalnum直接はサポートされていませんが、R7RS の char-alphabetic? および
char-numeric? が使えます。文字 参照。また、文字集合も
使えます。文字集合、scheme.charset - R7RS文字集合 参照。
isalphaR7RS の char-alphabetic?。文字 参照。また、
文字集合 および scheme.charset - R7RS文字集合 も参照してください。
isattyGauche の sys-isatty。他のファイル操作 参照。
iscntrl直接はサポートされていませんが、srfi.14 で
(char-set-contains? char-set:iso-control c) が使えます。
scheme.charset - R7RS文字集合 参照。
isdigitR7RS の 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文字集合 参照。
islowerR7RS の 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文字集合 参照。
isspaceR7RS の char-whitespace?。文字 参照。
srfi.14 で (char-set-contains? char-set:whitespace c)
も使えます。scheme.charset - R7RS文字集合 参照。
isupperR7RS の 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文字集合 参照。
killGauche の sys-kill。シグナル 参照。
labsR7RS の abs。数値の演算 参照。
ldexpGauche の ldexp。
ldivR7RS の quotient および remainder を使いましょう。
数値の演算参照。
linkGauche の sys-link。ディレクトリ操作参照。
localeconvGauche の sys-localeconv。ロケール 参照。
localtimeGauche の sys-localtime。時間 参照。
logR7RS の log。数値の演算 参照。
log10直接はサポートされていません。
log10(z) ≡ (/ (log z) (log 10)) です。
longjmpR7RS の call/cc が類似(上位)のメカニズムを提供しています。
継続 参照。
lseekGauche の port-seek (ポート共通の操作参照) を使いましょう。
mallocScheme では必要ありません。
mblenmbstowcsmbtowcGauche ではマルチバイト文字列を内部的に処理しますので、一般的には
文字列がマルチバイトであるかどうかを気にする必要はありません。
string-length は常に、サポートされているエンコーディングの
文字列に対して、文字数を返します。文字のエンコーディング変換を
したいのであれば、gauche.charconv - 文字コード変換 を参照してください。
memcmpmemcpymemmovememset同等の関数はありません。
mkdirGauche の sys-mkdir。ディレクトリ操作 参照。
mkfifoGauche の sys-mkfifo。
mkstempGauche の sys-mkstemp。ディレクトリ操作 参照。
tmpnam の代りにこちらを使いましょう。
mktimeGauche の sys-mktime。時間 参照。
modfGauche の modf。
open直接はサポートされていません。この操作に対応するのな
R7RS の open-input-file または open-output-file です。
ファイルポート 参照。
opendir直接はサポートされていません。
ディレクトリのエントリをいちどに読むには sys-readdir
が使えます。ディレクトリ 参照。
openptysys-openpty を使いましょう。gauche.termios - 端末の制御 参照。
pathconfサポートしません。
pauseGauche の sys-pause。その他のシステムコール 参照。
perrorGauche には同等の関数はありません。システムコールは一般的には error
(<system-error>) を投げます。これには、失敗した理由の説明が含まれて
います。
pipeGauche の sys-pipe。他のファイル操作 参照。
powR7RS の expt。数値の演算 参照。
printf直接はサポートされていませんが、Gauche の format は類似の機能を
提供しています。出力 参照。SLIB には printf の実装があります。
putcputcharwrite-char または write-byte を使いましょう。出力 参照。
putsdisplay を使いましょう。出力 参照。
qsortGauche の sort および sort! はリストをソートする便利な方法を
提供しています。ソートとマージ 参照。
raiseGauche には同等の関数はありません。Scheme の関数 raise (SRFI-18)
は例外を発生させます。シグナル SIG を現在のプロセスに送るには
(sys-kill (sys-getpid) SIG) が使えます。
rand直接はサポートされていませんが、多くのプラットフォーム上で、sys-random
のような、よりよい RNG が利用可能です。その他のシステムコール 参照。
read直接はサポートされていませんが、
read-uvector あるいは
read-uvector! (ユニフォームベクタのブロック入出力参照)が使えます。
readdir直接はサポートされていません。Gauche の sys-readdir は
指定のディレクトリを一度に読みます。ディレクトリ 参照。
readlinkGauche の sys-readlink。ディレクトリ操作 参照。
この関数はシンボリックリンクをサポートしているシステム上で利用可能です。
reallocScheme では必要ありません。
realpathGauche の sys-normalize-pathname あるいは sys-realpath。
パス名参照。
removeGauche の sys-remove。ディレクトリ操作参照。
renameGauche の sys-rename。ディレクトリ操作参照。
rewind直接はサポートされませんが、port-seekが代わりに使えます。
ポート共通の操作参照。
rewinddir直接はサポートされていません。
ディレクトリエントリを一度に読むには sys-readdir が使えます。
ディレクトリ参照。
rmdirGauche の sys-rmdir。ディレクトリ操作参照。
scanfサポートしていません。一般的にはパーザを書かねばなりません。
データを S式で保持できるなら、read が使えます。
構文がごく単純なら、srfi.14 (srfi.13 - 文字列ライブラリ) の
string-tokenize や、正規表現 (正規表現)
が使えるでしょう。
selectGauche の sys-select。I/Oの多重化参照。
setbuf必要ありません。
setgidGauche の sys-getgid。
setjmpR7RS の call/cc が類似(上位)のメカニズムを提供しています。
継続 参照。
setlocaleGauche の sys-setlocale。ロケール参照。
setpgidGauche の sys-setpgid。システムへの問い合わせ参照。
setsidGauche の sys-setsid。システムへの問い合わせ参照。
setuidGauche の sys-setuid。システムへの問い合わせ参照。
setvbuf必要ありません。
sigactionシグナルハンドラを設定するには、set-signal-handler! が使えます。
シグナルの処理参照。
sigaddsetsigdelsetsigemptysetsigfillsetGauche の sys-sigset-add! および sys-sigset-delete!。
シグナルとシグナルセット参照。
sigismember未サポート。
siglongjmpR7RS の call/cc が類似(上位)のメカニズムを提供しています。
継続 参照。
signalシグナルハンドラを設定するのには、with-signal-handlers が使えます。
シグナルの処理 参照。
sigpending未サポート
sigprocmaskシグナルマスクは内部的に処理されます。シグナルの処理参照。
sigsetjmpR7RS の call/cc が類似(上位)のメカニズムを提供しています。
継続 参照。
sigsuspendGauche の sys-sigsuspend。シグナルのマスクと待機参照。
sigwaitGauche の sys-sigwait。シグナルのマスクと待機参照。
sinsinhsin および sinh を使いましょう。数値の演算参照。
sleepGauche の sys-sleep。その他のシステムコール参照。
sprintf直接はサポートされていませんが、Gauche の format は類似の機能を
提供しています。出力 参照。SLIB には printf の実装があります。
sqrtR7RS の sqrt。数値の演算参照。
srand直接はサポートされていませんが、多くのプラットフォーム上で、sys-random
のような、よりよい RNG が利用可能です。その他のシステムコール 参照。
また、math.mt-randomはさらに優れたRNGを提供します
(math.mt-random - Mersenne Twister乱数発生器参照)。
sscanfサポートしていません。一般的にはパーザを書かねばなりません。
データを S式で保持できるなら、read が使えます。
構文がごく単純なら、srfi.14 (srfi.13 - 文字列ライブラリ) の
string-tokenize や、正規表現 (正規表現)
が使えるでしょう。
statGauche の sys-stat。ファイルの状態参照。
strcasecmpR7RS の string-ci=? および、その他の比較関数。
文字列の色々な比較参照。
strcatR7RS の string-append。文字列を扱うその他の手続き参照。
strchrSRFI-13 の string-index。 文字列の探索参照。
strcmpR7RS の string=? および、その他の比較関数。
文字列の色々な比較参照。
strcoll未サポート。
strcpyR7RS の string-copy。文字列を扱うその他の手続き参照。
strcspn直接はサポートされていませんが、文字集合とともに、SRFI-13 の
string-skip が使えます。文字列の探索参照。
strerrorGaucheのsys-strerror。 システムへの問い合わせ参照。
strftimeGauche の sys-strftime。時間参照。
strlenR7RS の string-length。文字列のアクセスと変更参照。
strncat直接はサポートされていませんが、string-append および
substring が使えます。
strncasecmpSRFI-13 の string-compare-ci は非常に柔軟な(しかし、使うのは
多少難しい)機能を提供しています。文字列の色々な比較参照。
ふたつの文字列の固定長の接頭辞が一致しているかどうかをチェックしたい
だけなら、SRFI-13 の string-prefix-ci? が使えます。
strncmpSRFI-13 の string-compare-ci は非常に柔軟な(しかし、使うのは
多少難しい)機能を提供しています。文字列の色々な比較参照。
ふたつの文字列の固定長の接頭辞が一致しているかどうかをチェックしたい
だけなら、SRFI-13 の string-prefix-ci? が使えます。
文字列のプリフィックスとサフィックス参照。
strncpySRFI-13 の substring。文字列を扱うその他の手続き参照。
strpbrk直接はサポートされていませんが、文字集合と SRFI-13 の string-skip
が使えます。文字列の探索参照。
strrchrSRFI-13 の string-index-right。文字列の探索参照。
strspn直接はサポートされていませんが、文字集合と SRFI-13 の string-index
が使えます。文字列の探索参照。
strstrSRFI-13 の string-contains。文字列の探索参照。
strtodR7RS の string->numberが使えます。数値の変換参照。
strtokSRFI-13 の string-tokenize。他の文字列操作参照。
strtolstrtoulR7RS の string->numberが使えます。数値の変換参照。
strxfrm未サポート。
symlinkGauche の sys-symlink。ディレクトリ操作参照。
この関数は、シンボリックリンクをサポートしているシステム上で利用可能です。
sysconf未サポート。
systemGauche の sys-system。プロセス管理参照。
一般的にはプロセスライブラリ(gauche.process - 高レベルプロセスインタフェース)
を使うことを推奨します。
tantanhR7RS の tan および Gauche の tanh。数値の演算参照。
tcdraintcflowtcflushtcgetattrtcgetpgrptcsendbreaktcsetattrtcsetpgrp対応する関数はそれぞれ、sys-tcdrain、sys-tcflow、
sys-tcflush、sys-tcgetattr、sys-tcgetpgrp、
sys-tcsendbreak、sys-tcsetattr、sys-tcsetpgrp です。
gauche.termios - 端末の制御参照。
timeGauche の sys-time。 時間参照。
timesGauche の sys-times。システムへの問い合わせ参照。
tmpfile厳密には、サポートしません。sys-mkstempを見てください。
ディレクトリ操作参照。
tmpnamGauche の sys-tmpnam。この関数は POSIX にあるので提供されていますが、
潜在的なセキュリティリスクがあるため、利用はおすすめできません。
代りに sys-mkstemp を使いましょう。ディレクトリ操作参照。
tolowertoupperR7RS の char-upcase および char-downcase。文字参照。
ttynameGauche の sys-ttyname。他のファイル操作参照。
tzset未サポート。
umaskGauche の sys-umask。ディレクトリ操作参照。
unameGauche の sys-uname。システムへの問い合わせ参照。
ungetc直接はサポートされません。プッシュしなおす代りに、peek-char をつかって
先読みしましょう。
unlinkGauche の sys-unlink。ディレクトリ操作参照。
utimeGauche の sys-utime。ファイルの状態参照。
va_argva_endva_startScheme は可変長引数を自然に処理できますので、必要ありません。
vfprintfvprintfvsprintf直接はサポートされていませんが、Gauche の format は類似の機能を
提供しています。出力 参照。SLIB には printf の実装があります。
waitGauche の sys-wait。プロセス管理参照。
waitpidGauche の sys-waitpid。プロセス管理参照。
wcstombswctombGauche はマルチバイト文字列を内部的に処理します。それゆえ、一般的には
文字列がマルチバイトであるかどうかを気にする必要はありません。
string-length は常にサポートされているエンコーディングでの文字列の
文字数を返します。文字エンコーディングを変換したければ、
gauche.charconv - 文字コード変換を参照してください。
writeR7RS の display (see 出力)。
あるいは write-uvector (ユニフォームベクタのブロック入出力参照)。