car
, cdr
, cons
, append
, reverse
, length
car()
: 任意, cdr()
, cons()
, append()
, reverse()
: リスト, length()
: 自然数
car()
は, 空でない list の先頭要素を出力する. 空リストが入力された場合は, 空リストが出力される.
cdr()
は, 空でない list から先頭要素を取り除いたリストを出力する. 空リストが入力された場合は, 空リストが出力される.
cons()
は, list の先頭に obj を付け加えたリストを出力する.
append()
は, list1 の要素と list2 のすべての要素を結合させたリスト [list1 の要素の並び,list2 の要素の並び] を出力する.
reverse()
は, list を逆順にしたリストを出力する.
length()
は, list の長さを出力する. ベクトル及び行列の要素の個数は, size()
を用いる.
cdr()
を n 回適用
した後 car()
を適用することにより可能であるが, 便法として,
ベクトル, 行列などの配列と同様, インデックス [n]
を後ろに
付けることにより取り出すことができる. ただし, システム内部では,
実際にポインタを n 回たどるので, 後ろの要素ほど取り出しに時間がかかる.
cdr()
は新しいセルを生成しないが, append()
は, 実際には
第 1 引数のリストの長さだけの cons()
の繰り返しとなるため,
第 1 引数のリストが長い場合には多くのメモリを消費することになる.
reverse()
に関しても同様である.
[0] L = [[1,2,3],4,[5,6]]; [[1,2,3],4,[5,6]] [1] car(L); [1,2,3] [2] cdr(L); [4,[5,6]] [3] cons(x*y,L); [y*x,[1,2,3],4,[5,6]] [4] append([a,b,c],[d]); [a,b,c,d] [5] reverse([a,b,c,d]); [d,c,b,a] [6] length(L); 3 [7] L[2][0]; 5
Go to the first, previous, next, last section, table of contents.