For Development HEAD DRAFTSearch (procedure/syntax/module):

Appendix A CとSchemeの関数の対応

Cに馴染んだプログラマのために、Cのオペレータとライブラリ関数から Schemeの関数への対応表を示しておきます。

+

R7RS の算術演算手続き +数値の演算参照。

+=

Gauche の inc! マクロ。代入参照。

-

R7RS の算術演算手続き -数値の演算参照。

-=

Gauche の dec! マクロ。代入参照。

->

Gauche の slot-ref が近いものです。インスタンスへのアクセス参照。

* (二項演算子)

R7RS の算術演算手続き *数値の演算参照。

* (単項演算子)

同等の手続きはありません。Scheme には明示的ポインタ表記はありません。

*=

同等の手続きはありません。

/

Cでは引数の型によって二つの異なる意味を持つオペレータです。 実数の除算には/を、整数除算の商を求めるにはquotientを使います。 数値の演算参照。

/=

同等の手続きはありません。

& (二項演算子)

Gauche の logandscheme.bitwise - R7RSビット演算参照。

& (単項演算子)

同等の手続きはありません。Scheme には明示的ポインタ表記はありません。

&&

R7RS の構文 and条件式参照。

&=

同等の手続きはありません。

|

Gauche の logiorscheme.bitwise - R7RSビット演算参照。

||

R7RS の構文 or条件式参照。

|=

同等の手続きはありません。

^

Gauche の logxorscheme.bitwise - R7RSビット演算参照。

=

R7RS の構文 set!代入参照。

==

R7RS の同等性手続き eq?eqv? および equal?等価参照。

<
<=

R7RS の算術演算手続き < および <=数値の比較参照。C の演算子とちがい、Scheme のものは 推移的なものです。

<<

Gauche の ashscheme.bitwise - R7RSビット演算参照。

<<=

同等の手続きはありません。

>
>=

R7RS の算術演算手続き < および <=数値の比較参照。C の演算子とちがい、Scheme のものは 推移的なものです。

>>

Gauche の ashscheme.bitwise - R7RSビット演算参照。

>>=

同等の手続きはありません。

%

R7RS の演算子 modulo および remainder数値の演算参照。

%=

同等の手続きはありません。

[]

R7RS の vector-ref (ベクタ参照) が近いものです。あるいは、 Gauche のジェネリック関数 ref (gauche.sequence - シーケンスフレームワーク参照)が、 任意の並び用になっています。

.

Gauche の slot-ref がこれに近いものです。インスタンスへのアクセス参照。

~

Gauche の lognotscheme.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-cfgetispeedsys-cfgetospeedsys-cfsetispeedsys-cfsetospeedgauche.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-charpeek-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-getgrnamUnixのグループとユーザ 参照。

getgroups

Gauche の sys-getgroupsシステムへの問い合わせ参照。

getlogin

Gauche の sys-getloginシステムへの問い合わせ参照。

getpgrp

Gauche の sys-getpgrpシステムへの問い合わせ 参照。

getpid
getppid

Gauche の sys-getpidシステムへの問い合わせ 参照。

getpwnam
getpwuid

Gauche の sys-getpwnam および sys-getpwuidUnixのグループとユーザ 参照。

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-selectI/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-tcdrainsys-tcflowsys-tcflushsys-tcgetattrsys-tcgetpgrpsys-tcsendbreaksys-tcsetattrsys-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 (ユニフォームベクタのブロック入出力参照)。



For Development HEAD DRAFTSearch (procedure/syntax/module):
DRAFT