メリークリスマス、皆さん。 今日はリストをちょこっと勉強して、繰り返しをちょこっと勉強します。
(1 2 3 4 ore ore2) コンな感じで線形のリストを定義できるらしい。これ自体では使えない。
(first (list 1 2 3)) 最初の要素を取り出すそう。つまり1と表示される。
(rest (list 1 2 3)) こっちは、rest、つまり残りを出す。つまり最初以外のリストを作って返却する。 結果は、(2 3)
(nth 2 (list 1 11 111 1111)) nth関数は、n個目を吐き出す関数、1つめにn個目、2つ目にlistを与えればよい。 返却は、111ですね。
(quote (a b c)) quote関数はlistを生成する関数ですが、いつものリストと違って中が展開されないそうだ。 つまり、ここでのaとbとcは変数として展開はされずに、a b cといった文字列で返却される。 結果は (A B C)。 大文字、小文字は無視された。
(cons 10 (quote (a b c))) consは、リストに要素を追加する命令。1つ目の引数に追加する要素を書く、そして、2つめの引数にリスト本体を渡してあげる。 そうすると、(10 a b c)と表示される。先頭(という概念があるのかは知らないが)に追加される。
() 空のリストはNILになる。それだけ。
(length (quote (a b c))) これを使うと、リストの長さを取得できる。いたって普通な感じだ。
繰り返し: (dotimes (n 3) (format t "~a" n)) 3回繰り返す。012って出る。 dotimesが繰り返し命令だな。変数の宣言っぽく3っていう風にやる。 ふ~ん、一応何となく分かってきた感じだ、
(format t "~a" n) ここで、表示している。 ~aっていうのがprintfの%dみたいなやつらしい。 なるほど
dolistっていうのもあって、こっちはfor-eachを書けるらしい。使い方はほぼ同じだ。 変数で3って入れてたところに、リストを与えればいいらしい。
力尽きたので、今日はこれにて。 いい夜を。 続く。