<

![endif]-->

fc2ブログ

少しは成長したかな - The Little Schemer

全章読了

The Little Schemer 4eThe Little Schemer 4e
(1995/12/21)
DP Friedman

商品詳細を見る


前回に続いて、8~10章を読み終えた。

感想は「楽しかった」。

技術書を読んで、「ためになった」とか、「勉強になった」などの感想はあっても、
「楽しかった」と表現できる本はなかなかない。
そんな中で、この本は杞憂の存在に感じる。

それは、筆者のScheme好きが本ににじみ出ているからだと思う。


例えば、

(define insert-g
 (lambda (seq)
  (lambda (new old l)
   (cond ((null? l) (quote ()))
      ((eq? (car l) old) (seq new old (cdr l)))
      (else (cons (car l)
         ((insert-g seq) new old (cdr l))))))))

(define seqrem
 (lambda (new old l)
   l))

(define yyy
 (lambda ( a l)
  ((insert-g seqrem) #f a l)))


という定義に対して、


(yyy 'sausage '(pizza with sausage and bacon))
;;==> (pizza with and bacon)

What do you think yyy.



と、例題と共に問いかける。


そしてこの本は、


Suprise! It is our old friend rember.



何が、"our old friend"かというと、
3章で取り上げた、'rember'と同じ振る舞いをすることからきている。


;;与えられた 'keyword'をリスト(member)から消す(remove)定義
;;(remove member -> rember)
;; 書き換え版
(define rember
 (lambda (a lat)
  (cond ((null? lat) (quote ()))
     ((eq? (car lat) a) (rember a (cdr lat)))
     (else (cons (car lat) (rember a (cdr lat)))))))

(rember 'mint '(lamb chops and mint jelly))
;;==> (lamb chops and jelly)
(rember 'cup '(coffee cup tea cup and hick cup))
;;==> (coffee tea and hick)


つまり、以前、取り上げたものを別の表現で定義しただけ。
こういった類の例は、「第○○章の××を、改めて書き換えると、△△のようになる。」
と、定石のように書かれるが、この本にかかれば、"our old friend"になってしまう。

わざとらしさを通り越して、筆者の世界に引き込まれてしまう。

そして、終始英語ではあるが、そんなに難しい表現で書いてある訳ではない。
高校生までの英語で十分だと思う。
メインマシンがMacなので、分からない単語は「辞書.app」を使って、
難なく読み終えた。

以前は、日本語訳が再版されないかと期待した時期もあったが、
もはや、原文で十分だと感じる。

むしろ、Schemeと英語の両方を学べることを「一石二鳥」と捉えれば、
読む価値はさらに上がる。


そんな一冊だった。





テーマ : プログラミング
ジャンル : コンピュータ

tag : 書評scheme

コメントの投稿

管理者にだけ表示を許可する

プロフィール

nao.bear

Author:nao.bear
見習いSchemer

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード