この本は、竹内郁雄先生の「初めての人のためのLisp」の二次創作です。竹内先生の許可をいただいて出版することとなりました。対話形式でLispの初歩を書き記したものです。



想定読者は中学生から大学生でLispが初めてな学生さんです。高校の授業を題材にしてLispの考え方、応用を述べつつ、学校での伝統的な科目にLispを通して興味をもってほしいと思っています。



ISLispを使っていますが、基本機能しか使っていませんので、ほぼそのままCommon Lispでも通用すると思います。無償提供されているEasy-ISLispという処理系を利用して、実際に動かしながらLispの初歩を習得していきます。



重要なことなので繰り返します。想定している読者は中学～大学くらいの学生さんです。



目次

はじめに

再会

ISLispとは

基本関数（１）

基本関数（２）

基本関数（３）

基本関数（４）

関数定義

再帰関数

局所定義とスコープ

スコープとクロージャ

制御構造（１）

制御構造（２）

同図像性とマクロ

二次方程式の解

DNA暗号を解く

行列の積

ラズパイで遊ぼう

ISLispで動くISLisp

あとがき



一部抜粋します。

「はじめに」

この本は以前、私のホームページで公開していたものを書き直したものです。竹内郁雄先生の「初めての人のためのLisp」は私の愛読書でした。その影響を受けつつ、自分でもそのようなスタイルでSchemeのことを書けないだろうか？と平成19年頃に書いていたものがベースになっています。



しかし、その書いたものは竹内先生の著作の二次創作であり著作権侵害をしていることがわかりました。内容にも誤りがあるような気がして公開はずっと取りやめていました。知り合いに「あの文書はもう公開しないの？」と聞かれたこともあり、思い切って竹内先生にご連絡してみることにしました。お手紙を差し上げてしばらくすると、なんと竹内先生からご連絡をいただきました。なんと！お許しをいただきました。この日の私は有頂天でした。心臓がドキドキし感無量でした。まさかあの高名な竹内先生からご連絡をいただけるなんて。先生の寛大さに感謝の気持ちでいっぱいです。



さて、そうして許可をいただいたものを読み直してみると、どうもいけません。当時は勢いだけで書いていたような感じもします。あれから試行錯誤しつつScheme処理系を作り、ISLisp処理系を作っているうちに幾分かは理解が深まっていたのでしょう。もっとしっかり書き直すべきだと思いました。書き直して竹内先生に原稿をお送りしましたら、先生はご多忙な中、丁寧に原稿を見てくださいました。さて、しっかり校正作業をして、いよいよ電子出版と思うものの、どうも気が乗りません。かねてから現在のSchemeの仕様の複雑さに違和感を持っていました。ISLisp規格に惚れ込み、処理系も作ってみるとISLispは正に初心者にぴったりでした。竹内先生にお詫びのメールをお送りして、ISLisp用に書き直すことにしました。こうしてできあがったのが本書です。先生には非礼をお詫びするとともに、寛大さに深く感謝申し上げます。



掲載したコードはQiitaにも再掲載しています。電子書籍は画面が小さいこと、画像データに変換したコードはコピペができないことに配慮しました。

