記事の内容
Lisp入門として、書籍Land of Lispの内容をまとめていく。
今回の記事では、3章の内容について勉強する。
シンタックスとセマンティクス、リストとコンスセルについてだ。
Lispの形式と意味
言語の形式的な規則と意味。
シンタックスとセマンティクスだ。
セマンティクス・・・プログラムの動作
Lispはの特徴はシンタックスの単純さ。
では、その単純さとは何か?
括弧を使ってコードをリストにする
では、そのリストの構成要素とは何か?
データ型を見ていこう。
・シンボル
アルファベットや数字、記号など。大文字小文字の区別はしない。
・数値
1と1.0は異なる。
・文字列
Lispはコードとデータをどう区別するか
区別するためのシンタックスがある。
・コードモード
フォームと呼ばれる構造のリストでなければならない。
(exp 2 3)
関数名などから始まるリスト。
・データモード
データとして扱うのだから実行はされない。
`(exp 2 3)
「クオートする」と言う。
リストの特徴
・コンスセル
リストはコンスセルでつなぎ合わされている。2つの箱のようなイメージであり、それぞれの箱はほかのコンスセルか、データを指している。
リスト `(1 2 3)ならば、次のようにコンスセルが連なっている。
p27
cons関数を使い次のように記述できる。
>>> (cons 1 (cons 2 (cons 3 ()))) (1 2 3)
・リストを扱う関数
cons関数
データをくっつける。その中身は、コンスセルを作ってゆくことでリストが構成される。コンスセル=consセルだ。
car関数
セルの最初のスロットにあるデータを取り出す。
cdr関数
2番目のスロットの値を取り出す。
list関数
長いリストを一気につくれる。
リストの中にリストを入れることもできる。リストは、これら関数を使って分解していくことができる。
関連記事