Lisp勉強2

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

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

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