好きをブチ抜く

「好き」をブチ抜く

本、映画、科学、哲学、心理、すごい人の考え方など。あらゆる情報を編集したい。

Lisp入門 リストとコンスセル 【Land of Lisp勉強メモ#3】

記事の内容

Lisp入門として、書籍Land of Lispの内容をまとめていく。

 

 

今回の記事では、3章の内容について勉強する。

 

シンタックスとセマンティクス、リストとコンスセルについてだ。

 

 

 

Lispの形式と意味

 

言語の形式的な規則と意味。

シンタックスとセマンティクスだ。

 

セマンティクス・・・プログラムの動作

 

Lispはの特徴はシンタックスの単純さ。

 

では、その単純さとは何か?

 

括弧を使ってコードをリストにする

 

 

では、そのリストの構成要素とは何か?

データ型を見ていこう。

 

・シンボル

アルファベットや数字、記号など。大文字小文字の区別はしない。

 

・数値

1と1.0は異なる。

 

・文字列

 

 

 

 

Lispはコードとデータをどう区別するか

 

区別するためのシンタックスがある。

 

・コードモード

フォームと呼ばれる構造のリストでなければならない。

(exp 2 3)

関数名などから始まるリスト。

 

・データモード

データとして扱うのだから実行はされない。

`(exp 2 3)

「クオートする」と言う。

 

 

 

 

リストの特徴

 

・コンスセル

リストはコンスセルでつなぎ合わされている。2つの箱のようなイメージであり、それぞれの箱はほかのコンスセルか、データを指している。

 

リスト `(1 2 3)ならば、次のようにコンスセルが連なっている。

 

f:id:asc_meta:20201018181257j:image

p27

 

cons関数を使い次のように記述できる。

 

>>> (cons 1 (cons 2 (cons 3 ())))
(1 2 3)

 

 

・リストを扱う関数

 

cons関数

データをくっつける。その中身は、コンスセルを作ってゆくことでリストが構成される。コンスセル=consセルだ。

 

car関数

セルの最初のスロットにあるデータを取り出す。

 

cdr関数

2番目のスロットの値を取り出す。

 

list関数

長いリストを一気につくれる。

 

リストの中にリストを入れることもできる。リストは、これら関数を使って分解していくことができる。

 

 

 

 

関連記事

 

www.buchinuku.work

 

www.buchinuku.work

www.buchinuku.work

 

www.buchinuku.work