メリークリスマス、皆さん。 今日はリストをちょこっと勉強して、繰り返しをちょこっと勉強します。

(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って入れてたところに、リストを与えればいいらしい。

力尽きたので、今日はこれにて。 いい夜を。 続く。