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? | 入力ポートで文字が準備できているか? |