Google

Go to the first, previous, next, last section, table of contents.


car, cdr, cons, append, reverse, length

car(list)
:: 空でない list の先頭要素.
cdr(list)
:: 空でない list から先頭要素を取り除いたリスト.
cons(obj,list)
:: list の先頭に obj を付け加えたリスト.
append(list1,list2)
:: list1list2 をこの順に 1 つにしたリスト.
reverse(list)
:: list を逆順にしたリスト.
length(list)
:: list の長さ.
return
car() : 任意, cdr(), cons(), append(), reverse() : リスト, length() : 自然数
list,list1,list2
リスト
obj
任意
  • リストは [obj1,obj2,...] と表される. obj1 が 先頭要素である.
  • car() は, 空でない list の先頭要素を出力する. 空リストが入力された場合は, 空リストが出力される.
  • cdr() は, 空でない list から先頭要素を取り除いたリストを出力する. 空リストが入力された場合は, 空リストが出力される.
  • cons() は, list の先頭に obj を付け加えたリストを出力する.
  • append() は, list1 の要素と list2 のすべての要素を結合させたリスト [list1 の要素の並び,list2 の要素の並び] を出力する.
  • reverse() は, list を逆順にしたリストを出力する.
  • length() は, list の長さを出力する. ベクトル及び行列の要素の個数は, size() を用いる.
  • リストは読み出し専用で, 要素の入れ替えはできない.
  • リストの n 番目の要素の取り出しは, 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.