Lispインタープリタを作成しよう

Lispインタープリタを作成しよう

Lispの一種であるClojure(言語)はJavaとClojureで作られています。 私は Clojureのソースの一部を流用・改造して自分で考えたオリジナルのLispインタープリタを作成しました この本はそのLispインタープリタの作り方を解説します。 関数は140個程度の小さなインタープリタですので、理解したり改造したりするのは容易な筈です。 このLispはJavaで書かれています。 インターブリタの作成方法を学習したい人向けの学習用本です。 またCommon LispとClojureの違いについても、書いています。 前半は無料公開しています。ソースの取得方法は05章に書いています。

Chapters
Chapter 01無料公開

Clojureは大変素晴らしい。しかし難しかった

Chapter 02無料公開

インタープリタを作ったきっかけ

Chapter 03無料公開

Read, Eval, Print

Chapter 04無料公開

コンパイル方法(前提の説明)

Chapter 05無料公開

ソースの置き場、コンパイル方法(詳細)

Chapter 06無料公開

実行方法

Chapter 07無料公開

インタープリタの関数の数

Chapter 08無料公開

ソースを読む前提知識(Collection)

Chapter 09無料公開

ソースを読む前提知識(ISeq, Seqable)

Chapter 10無料公開

Readの使い方

Chapter 11無料公開

ソースのパッケージについて

Chapter 12無料公開

Readを動かして理解する(数値)

Chapter 13無料公開

Symbolについて軽い説明

Chapter 14無料公開

Common Lispの nil と Readの改造

Chapter 15無料公開

Clojureの nil と ()の違い

Chapter 16無料公開

Symbolクラスの使い方

Chapter 17無料公開

Readマクロの概要

Chapter 18無料公開

Readマクロ quoteを読む

Chapter 19無料公開

Readマクロ # 関連処理は DispatchReader

Chapter 20無料公開

ReadマクロはLispで定義できません

Chapter 21無料公開

Readマクロの動作確認

Chapter 22無料公開

Print処理の概要

Chapter 23無料公開

Print処理の動作確認(1)

Chapter 24無料公開

Print処理の動作確認(2)メタ

Chapter 25無料公開

メタの概要

Chapter 26無料公開

Evalの概要

Chapter 27無料公開

Evalの補足説明

Chapter 28無料公開

Evalの動作確認

Chapter 29無料公開

関数の実装

Chapter 30無料公開

スペシャル オペレータの実装

Chapter 31無料公開

LexicalScopeの概要

Chapter 32無料公開

Lambda 概要

Chapter 33無料公開

load-fileの紹介

Chapter 34無料公開

Lisp1 と Lisp2

Chapter 35無料公開

Varの改造と、LexicalScope

Chapter 36無料公開

load-fileの演習とソースファイルの行カラム

Chapter 37無料公開

namespaceの演習

Chapter 38無料公開

クロージャの話(1)

Chapter 39無料公開

クロージャの話(2)

Chapter 40無料公開

defunの話

Chapter 41無料公開

ループ構文

Chapter 42無料公開

Common LispとClojureの共存、get問題ほか

Chapter 43無料公開

defconstantだけで、何が出来るか

Chapter 44無料公開

gson(json)と、SQLなど

Chapter 45無料公開

無料公開版終了のあとがき(1)

Chapter 46無料公開

無料公開版終了のあとがき(2)

Chapter 47

ここから有料版、toStringについて少々

Chapter 48

gsonを継承してコレクションは作れなかった

Chapter 49

1+, 1-は使えない

Chapter 50

Readマクロで出来ていない事

Chapter 51

PersistentVectorの実装

Chapter 52

On Lisp - defunでも、クロージャ作るってよ

Chapter 53

参照透過性、replacaやreplacdやnconcなんて今時いらない

Chapter 54

Java呼び出し機能、newの問題点

Chapter 55

java.util.Dateとjava.sql.Dateの区別(独自構文)

Chapter 56

&restがある関数のJavaでの実装

Chapter 57

Global variable considered harmful

Chapter 58

dynamic bindingって必要?

Chapter 59

お気楽 Common Lisp プログラミング入門に書いていた、do の動作は Common Lisp と Scheme で異なる

Chapter 60

マクロにするかスペシャルオペレータにするか

Chapter 61

知らなかった lambdaがマクロになっていた話

Chapter 62

requireのもう少し詳しい話

Chapter 63

Namespaceの使い方(その1)

Chapter 64

Namespaceの使い方(その2)

Chapter 65

nsマクロの実装方法

Chapter 66

requreの実装

Chapter 67

call/ccって作れるの? / の話

Chapter 68

Evalの関数の処理(その1)

Chapter 69

Evalの関数の処理(その2)

Chapter 70

Evalの変数の処理

Chapter 71

Evalの変数の処理(補足:getAliases)

Chapter 72

condに使う t やelseの話

Chapter 73

キーワードを関数として使う

Chapter 74

defunの引数やletの変数名が重複した時

Chapter 75

sortの話

Chapter 76

NamespaceとVarとSymbolの復習(1)

Chapter 77

新しいNamespaceが出来た時に使えるシンボルは?

Chapter 78

よく見る資料のリンク集

Chapter 79

NamespaceとVarとSymbolの復習(2)

Chapter 80

Java以外の話:ガーベージコレクター(GC)概要

Chapter 81

Java以外の話:GC(逆転ポインタ法)

Author
clazz
Topics
公開
本文更新
文章量
139,019
価格
1,100