
|
Go to the first, previous, next, last section, table of contents.
- car(list)
-
:: 空でない list の先頭要素.
- cdr(list)
-
:: 空でない list から先頭要素を取り除いたリスト.
- cons(obj,list)
-
:: list の先頭に obj を付け加えたリスト.
- append(list1,list2)
-
:: list1 と list2 をこの順に 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.
|