Shammer's Philosophy

My private adversaria

Lispのlast関数

Lispであるものを作りたい、と思っている。そのあるものを作る際に、「リストの最後からXXX個の要素を取り出す」ことをしたいと思って、そういう関数がないか調べてみた。そしたら、そのものズバリな関数が・・・その名はlast。まったく・・・そのままだ。参考サイトはここ。

 15.2. Lists

last関数は、リストと取り出す要素数の2つの引数を取る。要素数がない場合は、0として扱われるようだが・・・リスト内に.(dot)を含む場合は事情が異なるようだ。使う際は試してから使うのがいいと思うけれども。使用例は以下の通り。

? (setq aaa (append aaa (cons 97 nil)))
(97)
? (setq aaa (append aaa (cons 10 nil)))
(97 10)
? (setq aaa (append aaa (cons 13 nil)))
(97 10 13)
? (setq aaa (append aaa (cons 10 nil)))
(97 10 13 10)
? (setq aaa (append aaa (cons 13 nil)))
(97 10 13 10 13)
? (last aaa 4)
(10 13 10 13)
? (equal (last aaa 4) '(10 13 10 13))
T