平成28年度 プログラミング入門

関数一覧

制御関係

関数名使い方説明
define(define x y)
(define (f x1 x2 ... xn) y1 y2 ... yn)
変数xの値をyの値で定義する(束縛する)。xには変数のみ記述できる。
引数x1,..,xnをとる関数fを定義する。関数fの内容は式y1,...,ynに記述する。 関数fが評価されれば、y1から順に評価され、最後のynの値が関数fの返値として返される。
set!(set! x y)変数xの値をyの値で再定義する。
cond(cond (c1 e1)...(cn en) (else e))条件式c1からcnを順に評価し、最初に真(#t)となった条件式ciに対し、eiが評価され、eiの値がcond文の返値として返される。どの条件式も偽(#f)となる場合はelseの中の式eが評価される。
if(if c e1 e2)条件式cが真(#t)ならe1を評価しその結果をifの返値として返す。偽(#f)ならe2を評価しその結果をifの返値として返す。
lambda(lambda (x1 x2 ... xn) y1 y2 ... yn) λ式を定義する。x1,...,xnを引数として受け取り、y1からynまで順に評価される関数を返す。この関数が評価されれば、y1からynまで順に評価し、最後のynの評価結果を関数の返値として返す。
let(let ((x1 y1) (x2 y2) ... (xn yn)) e1 e2 ... en)変数x1からxnに対し、それぞれy1,...,ynの値を束縛し、e1からenまでを評価し、enの評価結果をlet文の返値として返す。x1からxnの変数名が有効なのはこのlet文内だけである。
begin(begin e1 e2 ... en)e1,...,enを順に評価し、最後のenの返値をbegin全体の返値として返す。
apply(apply f xs)リストxs=(x1 x2 ... xn)に対し、(f x1 x2 ... xn)を評価する。
display(display x)xを表示する。
load(load x)ファイルxを読み込む。
error(error x1 x2 ... xn)非組み込み関数。エラーメッセージx1,x2,...,xnを表示し、エラーを返す。


数値演算関係

関数名使い方説明
+, -, *, /, remainder(+ x1 ... xn), (- x1 ... xn), (* x1 ... xn),
(/ x1 ... xn), (remainder x y)
和(+)、差(-)、積(*)、商(/)、余り(remainder)
-(- x)xの符号を反転させた値を返す。(* -1 x)と同じ。
abs(abs x)xの絶対値を返す。
exp, expt, log(exp n), (expt x y), (log x)指数や対数の計算をする関数。(exp n)はeのn乗。(expt x n)はxのn乗。logは自然対数。
min, max(min x1 ... xn), (max x1 ... xn)minはx1,...,xnの中で一番小さな数値を返す。maxはx1,...,xnの中で一番大きな数値を返す。
square(square x)非組み込み関数。xの2乗を計算。
cube(cube x)非組み込み関数。xの3乗を計算。
=, <, >, <=, >=(= x y) (< x y) (> x y) (<= x y) (>= x y)等号、不等号。
and, or, not(and x1 x2 ... xn), (or x1 ... xn), (not x)論理積、論理和、否定。
number?(number? x)xが数ならば#tを返す。そうでなければ#fを返す。
even?, odd?(even? x), (odd? x)xが偶数かどうかを判定する述語(even?), xが奇数かどうかを判定する述語(odd?)
gcd(gcd x y)xとyの最大公約数を計算。


リスト関係

関数名使い方説明
cons(cons x y)xとyのペアを生成する。
car(car x)ペアxの第一要素を返す。
cdr(cdr x)ペアxの第二要素を返す。
list(list x1 x2 ... xn)x1,...,xnを要素とするリストを生成する。
length(length x)リストxの長さを返す。
list-ref(list-ref x n)リストxのn+1番目の要素を返す。
append(append x y)リストxとリストyを連結したリストを返す。
reverse(reverse x)リストxを逆順に並べたリストを返す。
map(map f x)関数fとリストx(=(x1,...,xn))に対し、(list (f x1) (f x2) ... (f xn))を評価した結果を返す。
filter(filter c x)非組み込み関数 リストxの各要素xiのうち条件式(c xi)が真となる要素だけを並べたリストを返す。
reduce(reduce f ini x)非組み込み関数 リストx(=(x1 x2 ... xn))に対し、(f x1 (f x2 ... (f xn ini)))を評価した結果を返す。
range(range x y)非組み込み関数 整数xから整数yまで並べたリストを返す。
for(for x f)非組み込み関数 リストx(=(x1 x2 ... xn))と関数fに対し、(f x1),..,(f xn)を順に評価する。返値はない。また、引数の順番が逆になったfor-eachという組み込み関数も存在する。
for-each(for-each f x)(for x f)と同じ。
assoc(assoc key x)連想リストx(=((k1 v1) (k2 v2) ... (kn vn)))に対し、key=kiとなる要素をk1からknまで順に探し、key=kiとなるkiがみつかれば(ki vi)を返す。見つからなければ偽(#f)を返す。
null?(null? x)リストxが空リストかどうかを判定する。
pair?(pair? x)xがペアかどうかを判定する。


記号関係

関数名使い方説明
eq?(eq? x y)記号xとyの等価性を判定。オブジェクトxとyの構造共有を判定。
memq(memq x l)xがリストlの要素であるかどうか判定する。そうであれば、xが最初に現れるところから始まるリストを返す。そうでなければ#fを返す。判定にはeq?を使う。
symbol?(symbol? s)sが記号なら#tを返す。そうでなければ#fを返す。


ストリーム関係

関数名使い方説明
stream-car(stream-car s)非組み込み関数 stream用のcar。ストリームsの先頭の要素を返す。
stream-cdr(stream-cdr s)非組み込み関数 stream用のcdr。 ストリームsの先頭要素を除いた残りのストリームを返す。
stream-ref(stream-ref s n)非組み込み関数 stream用のref。ストリームsのn+1番目の要素を返す。
stream-range(stream-range s e)非組み込み関数 stream用のrange。整数sから始まって整数eまでを要素とするストリームを返す。
stream-map(stream-map f s)非組み込み関数 stream用のmap。ストリームsの各要素に対してfを適用したストリームを返す。
stream-for(stream-for s f)非組み込み関数 stream用のfor。ストリームsの各要素に対しfを実行する。
stream-filter(stream-filter p s)非組み込み関数 stream用のfilter。ストリームsのうちpの条件を満たすものだけ残したストリームを返す。

配列関係

関数名使い方説明
vector?(vector? x)xが配列なら#tを返す。そうでなければ#fを返す。
vector(vector a1 a2 ... an) a1, a2, ..., anを要素とする配列を返す。
make-vector(make-vector k)k個の要素を持つ配列を返す。
make-vector(make-vector k fill) k個の要素を持つ配列を返す。ただし、各要素の値はfillとなる。
vector-ref(vector-ref x n)配列xのn+1番目の要素を返す。
vector-set!(vector-set! x n v)配列xのn番目の要素をvに設定する。
vector-length(vector-length x)配列xの大きさ(要素数)を返す。