Schemeで述語を書く

※ 以下はScheme初心者である私の勉強用のメモです。間違っている可能性がありますので注意してください。

条件の真偽を決定するために使用される関数を述語(predicate)という。
以下に述語の一覧を示す。

オブジェクトの比較を行う関数

関数意味
eqv?同じオブジェクトか?
eq?同じオブジェクトか?
eqv?よりも細かく差異を見分ける。(実装依存)
equal?同じオブジェクトか?
ペア、ベクタ、文字列の内容を比較する。それ以外はeqv?を適用する。

数値の比較・識別を行う関数

関数意味
number?数値か?
=等しいか?
<小さいか?
>大きいか?
<=以下か?
>=以上か?
positive?正か?
negative?負か?
zero?0か?
even?偶数か?
odd?奇数か?

文字の比較・識別を行う関数

関数意味
char?文字か?
char-alphabetic?英文字か?
char-numeric?数字を表す文字か?
char-whitespace?スペースか?
char-upper-case?大文字か?
char-lower-case?小文字か?
char=?等しいか?
char<?小さいか?
char>?大きいか?
char<=?以下か?
char>=?以上か?
char-ci=?等しいか?(大文字/小文字区別無し)
char-ci<?小さいか?(大文字/小文字区別無し)
char-ci>?大きいか?(大文字/小文字区別無し)
char-ci<=?以下か?(大文字/小文字区別無し)
char-ci>=?以上か?(大文字/小文字区別無し)

文字列の比較・識別を行う関数

関数意味
string?文字列か?
string=?等しいか?
string<?小さいか?
string>?大きいか?
string<=?以下か?
string>=?以上か?
string-ci=?等しいか?(大文字/小文字区別無し)
string-ci<?小さいか?(大文字/小文字区別無し)
string-ci>?大きいか?(大文字/小文字区別無し)
string-ci<=?以下か?(大文字/小文字区別無し)
string-ci>=?以上か?(大文字/小文字区別無し)

データ型を識別する関数

関数意味
number?数値か?
integer?整数か?
real?実数か?
inexact?浮動小数点か?
exact?浮動小数点でないか?
complex?複素数か?
rational?有理数か?
char?文字か?
string?文字列か?
list?リストか?
pair?ペアか?
null?リストが空か?
symbol?シンボルか?
boolean?ブーリアンか?
vector?ベクトルか?
port?ポートか?
input-port?入力ポートか?
output-port?出力ポートか?
eof-object?end of fileオブジェクトか?
procedure?手続きか?

その他

関数意味
char-ready?入力ポートで文字が準備できているか?