リスト
list
リスト(値をひとまとめにして並べたもの)の作成
引数:数値、文字列
戻り値:引数のリスト
例: “Apple” “Book” 1 2 3 をリストにして一つの値にして、変数Lstに入れる。
(setq Lst (list “Apple” “Book” 1 2 3))
関数の省略
list は ‘ で省略できる関数です。
変数や数式をリストの要素に入れる場合は省略できません。
例: “Apple” “Book” 1 2 3 をリストにして一つの値にして、変数Lstに入れる。
(setq Lst '(“Apple” “Book” 1 2 3))
car
リストから1つ目の要素を取得する。
引数:リスト
戻り値:引数のリストの1つ目の要素
例: 変数Lstに入っている (“Apple” “Book” 1 2 3) から “Apple” を取得。
(car Lst)
cdr
リストから1つ目の要素を取り除いた残りのリストを取得する。
引数:リスト
戻り値:引数のリストから1つ目の要素を削除したリスト
例: 変数Lstに入っている (“Apple” “Book” 1 2 3) から “Apple” を取り除いて、(“Book” 1 2 3)にする。
(cdr Lst)
cadr
リストの2つ目の要素を取得する。
(car (cdr …)) 1つ目の要素を取り除いた後に1つ目の要素を取得と同じ。
引数:リスト
戻り値:引数のリストの2つ目の要素
例: 変数Lstに入っている (“Apple” “Book” 1 2 3) から “Book” を取得。
(cadr Lst)
cadとcdr の他の組み合わせについてはこちらの記事を。
cons
リストの先頭に要素加える。もしくは、ドットペアを作成する。
リストの先頭に要素を加える
引数:リストに加える値とリスト
戻り値:値が加わったリスト
例: 変数Lstに入っている リスト (“Book” 1 2 3) の先頭に “Apple”を加えて リスト (“Apple” “Book” 1 2 3) にする。
(cons "Apple" Lst)
ドットペア作成
引数:ドットペアとして組み合わせたいシンボルと値。シンボルには quote 関数を付ける( ‘ を使って省略できる)
戻り値:シンボルと値のドットペア
例: シンボル A と 数値 1 をセットにして (A. 1) にする。
(cons (quote A) 1)
‘ でquote を省略した形
(cons 'A 1)
nth
リストの n 番目の要素を取得する。
順番は0から始まるので注意
引数:n 番目を示す数値とリスト
戻り値:引数のリストのn番目の要素
例: 変数Lstに入っている (“Apple” “Book” 1 2 3) から 1 を取得。
(nth 2 Lst)
last
リストの 一番最後の要素を取得する。
引数:リスト
戻り値:引数のリストの一番最後の要素
例: 変数Lstに入っている (“Apple” “Book” 1 2 3) から 3 を取得。
(last Lst)
reverse
リストの順番を逆にする。
引数:リスト
戻り値:要素の順番が逆になったリスト
例: 変数Lstに入っている (“Apple” “Book” 1 2 3) を(3 2 1 “Book” “Apple”)にする。
(reverse Lst)
mapcar
指定されたリストの各要素を引数として引用関数を実行した結果のリストを返す。
引数:引用関数 リスト
戻り値: 引用関数実行後のリスト
例: 変数Lstに入っている 数値のリスト(1 2 3) を文字列のリスト(“1” “2” “3”)にする。
(mapcar (quote itoa) (list 1 2 3 ))
例: 変数a b c dに、1 2 3 4をそれぞれ代入する。
(mapcar (quote set)
(list (read "a") (read "b") (read "c") (read "d"))
(list 1 2 3 4)
)
関数の省略
quoteは引用関数を指定する関数です。
‘ で ‘ で省略で関数名、() 省略できます。
リストも省略可能な関数です。
例: 数値のリスト(1 2 3) を文字列のリスト(“1” “2” “3”)にする。
(mapcar 'itoa '(1 2 3))
readも省略可能な関数です。
例: 変数a b c dに、1 2 3 4をそれぞれ代入する。
(mapcar 'set '(a b c d) '(1 2 3 4))
apply
リストの各要素を引数として引用関数を実行。
引数:引用関数 引用関数に渡す引数のリスト
戻り値: 実行後の結果
例: 変数Lstに入っている 数値のリスト(1 2 3) を合計する。
(apply (quote +) (list 1 2 3 ))
例: 数値の12.25を、十進表記で小数点一桁にして文字列”12.3”に変換する。
(apply (quote rtos) (list 12.25 2 1))
関数の省略
quoteは引用関数を指定する関数です。’ で省略で関数名、() 省略できます。
listも ‘ で省略できます。()は必要です。
(mapcar '+ '(1 2 3))
(apply 'rtos '(12.25 2 1))
lambda
apply や mapcar で使う引数関数を定義する。
引数:自作関数のプログラムコード
戻り値: 実行後の結果
例: 自作関数 (+ a b c)を定義して、 apply の引用関数として使い、引数のリスト(1 2 3) を渡す。
(apply (quote (lambda (a b c) (+ a b c))) (list 1 2 3))
例: 自作関数 (+ a 10)を定義して、 mapcar の引用関数として使い、数値のリスト(1 2 3) のそれぞれの値に10を足したリスト (11 12 13) にする。
(mapcar (quote (lambda (a) (+ a 10))) (list 1 2 3))
関数の省略
quoteは引用関数を指定する関数です。’ で省略で関数名、() 省略できます。
listも ‘ で省略できます。()は必要です。
(apply '(lambda (a b c) (+ a b c)) '(1 2 3))
(mapcar '(lambda (a) (+ a 10)) '(1 2 3))