car, cdr, cons, append, reverse, lengthcar() : 任意, cdr(), cons(), append(), reverse() : リスト, length() : 自然数
car() は, 空でない list の先頭要素を出力する. 空リストが入力された場合は, 空リストが出力される.
cdr() は, 空でない list から先頭要素を取り除いたリストを出力する. 空リストが入力された場合は, 空リストが出力される.
cons() は, list の先頭に obj を付け加えたリストを出力する.
append() は, list1 の要素と list2 のすべての要素を結合させたリスト [list1 の要素の並び,list2 の要素の並び] を出力する.
reverse() は, list を逆順にしたリストを出力する.
length() は, list または vect の長さを出力する. 行列の要素の個数は, 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] length(ltov(L)); 3 [8] L[2][0]; 5
Go to the first, previous, next, last section, table of contents.