実践Common Lisp 第12章 リスト:やつらがLISPと呼ぶ理由

今日は、12章を読んだ。リスト処理なので、最初にコンスセルの話があった。だけど、考えてみれば、ここまでコンスセルの話がでてこないのは、ある意味すごい。Lispの特徴的な部分だから、「Lisp 一夜漬け」だと基本文法とリストについてだけだし。実践Common Lispでは、マクロの後だもんな。

破壊的の2種類の意味

副作用を目的とした破壊と、引数を戻り値の材料として使う(リサイクルする)ことによっる引数の破壊。(と理解した) 確かに今まで、PGが「副作用のある関数は使うのに税金がかかる」って言ってたから初学の段階では避けるようになってた。

だけど、今後は理解して副作用のある関数も使えるかもしれない。実践Common Lispにも書いてあったけど、基本副作用が無い関数を使って、副作用が無い関数を書くほうがいい。パフォーマンスチューニングの段階で必要な箇所を最適化するほうが正しいアプローチ。

n

nreverse のn は、non-consingのn.

リスト系関数

lastが引数を取ることを知らなかった。あとbutlastというlastの反対を返す関数は存在自体を知らなかった。(これも引数を取る)

ldiff tailp

理解不能だった。HyperSpecも読んで、repl相手にいろいろ試してみたけど、何をする関数なのか理解できないorz.

諦めてからldiffとtailpの引数の順番が逆だったのに気がついたけど、それでもやはりわかりませーん。consセルについての理解が足りないのかも。

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.