記事の内容
Lisp入門の勉強として、書籍『Land of Lisp』の内容をまとめる。
今回は、第4章条件分岐についてだ。
対称性という感覚を持ちながら、学んでいきたい。
nilと()の対称性
・空のリスト()は偽
空リストを検出するのが楽ということは、再帰の処理に便利。リストの構造そのものが再帰的な構造、つまり、コンスのコンスのコンスの...となっている。
リストを頭から食べていく関数を書くのが楽。
そして、()とnilは全く同等。
条件分岐 ifとその仲間たち
・ifは一度に一つずつ
条件式を使う理由は、条件によってある式を評価したりしなかったりしたいから。二つの式のうち、どちらか一方だけが評価される。
しかし、複数の式の処理はできない。
・whenとunless
whenは条件が真の時に囲まれた式を全て実行する。unlessは条件が偽のとき。
・万能条件コマンドcond
条件式でいろんなことを一度にやれる。
・case
eqで比較するのではなく、比較対象になる値を並べるだけでいい。可読性が上がる。とくに、分岐の数が多い時など。
条件式のテクニック
・andとor
条件判断コマンドとしても使用可能。
orに与えられた式のうち真になるものが見つかったら直ちに、残りの式は評価せず真を返す。
・真理値以上のものを返す関数
真理値だけではなく、もうちょっと有用な情報を返すことができる関数がある。
比較関数の方針
さまざまな比較関数があるが、次の基準にしたがうべき。
・シンボル同士は常にeqで比較すべし
・シンボル同士の比較でなければequalをつかえ
まとめ
本章では、対称性という言葉が繰り返し使用される。そのイメージが条件分岐の構文を見ることで、なんとなくわかってきた。
今後、Lispを勉強する上で対称性を感じられるようになりたい。同時に、対称性が破れる瞬間も意識しておきたい。Lip感覚が磨かれていく、のだろうか笑
関連記事