黄金分割―自然と数理と芸術と
黄金四角形と黄金螺旋に興味があったので、つい買ってしまいました。
ちなみに黄金比に興味を持ったのは、SBRを読んだためです。
あと TOKYO STYLE (ちくま文庫) も買いました。
TOKYO STYLE (ちくま文庫)
実はこれも以前から欲しいと思っていたものです。
コンビニとかによく置いてある「部屋がたくさん載ってる本」もついつい買ってしまいます。
listの中に指定した要素が入ってるかどうかっていうあれです。
letrec の使われ方が微妙に新鮮だったりする。
使われ方というか位置というか。
(define-syntax letcc |
The Little Schemer, 4th Edition とその続き The Seasoned Schemer は、よく Lisp や Scheme の入門書として紹介されます。
初めての人のためのLISP[増補改訂版] の次あたりに読んでみてはどうでしょうか。
これ↑も読んでみたいのですが、無職でお金がないので購入するか迷ってます。
こういうのって、「読みたい」以前に「全部手元に欲しい・・・」っていう収集欲的なものが働きませんか。
Schemer シリーズと言いつつ、Java と ML を含んでいますが。
The Little Schemer, 4th Edition
car, cdr, cons, cond, eq?, null?, 再帰、高階関数、クロージャ、継続渡し、Y combinator, カリー化、Scheme で作る小さなLisp など。
letrec, let/cc, call/cc, 継続(渡し、呼び出し)、set!, if, scheme で作る Lisp など。
sxml の作者の方が scheme で作った miniKANREN という Prolog ライクな論理型言語について話が進むらしい。マクロも。
A Little Java, A Few Patterns (Language, Speech, & Communication)
Java のと ML のは持ってないので よく知りませんが、読んでみたいです。
ML といえば Caml , Ocaml, F# ですよね。
The Little Schemer, 4th Edition の9章が、The Seasoned Schemer は13章がサンプルとして公開されているようです。
PostScript ファイルなので viewer がない方はこちら。
Google Books では The Reasoned Schemer は読めないみたいですね。
The Little Schemer, 4th Edition と A Little Java, A Few Patterns (Language, Speech, & Communication) は訳本があるようですね。絶版みたいですけど。
Scheme(スキーム)手習い―直感で学ぶLisp (COMPUTATION & SOFTWARE SCIENCE)
探せば他にもありそうですね。
The Little Schemer, 4th Edition は元々Little LISPer だったようです。
The Little LISPer: Trade Edition
なんと言えば良いのかわかりません・・・。「hogeに束縛されているlengthを組み込みのものに戻す」、とか?
とにかく、(define length 'hoge)とかしちゃったのを、元のlengthに戻したい時。
(define length
(with-module gauche length))
1 初めての人のためのLisp 2 CARとCDRで世間を渡れば権兵衛もたじろぐ 3 解釈は評価なり・・・辞書なくして世は渡れず 4 基本関数を修了するや突然関数定義 なんと大それた・・・ 5 今度はcond再帰と再起を混同せぬように 6 またも再帰するから再帰なのだ 7 Gogogo・・・dododo・・・looplooploop・・・ やっぱりOは丸い 8 Lispの御本尊のお出まし 9 デートの前にリストの切り貼り 10 変態プログラム 11 シンボルを人前に曝す 12 ガールフレンドも買い物も関数引数でOK 13 Lispの解剖 その1 14 入出力がなければプログラムは生きていけぬ 15 Lispの解剖 とんでその2 16 大団円 対話性に関する対話 17 付録 Lispのまとめ
(目次:株式会社サイエンス社 株式会社新世社 株式会社数理工学社)
Lispの勉強会を名乗っていますが、Common Lisp ではなく Scheme の学習を進めています。Common Lisp はその後の予定。
隔週の土曜日、午前10時から行なっています。毎回、勉強 → ランチ → 雑談 という流れです。
今回の参加者は4人と少な目でした。しかし、今回は遠隔地からskypeで@cametan_001さんに参加頂き、いつもと違った面白さがありました。
あと Google wave すげー!リアルタイムコード共有的な意味で。
前回は「Schemeで高階関数を書いてみよう」ということで、リストから要素を取り除くrember手続きを書き、段階を追ってsrfi-1のfilter相当の高階関数rember-fに書き換えていく、というようなことをやりました。リストに要素を加えるinsertR, insertL, insert-g(高階関数)も。
rember は The Little Schemer に出てくるもので、Remove Member ということで良いかと思います。insertR, L, -g も同じく The Little Schemer に出てきます。
今回は、
というようなことがありました。
1はともかく、2は放置、3はループしかないかな?ということでした。
ところでsrfiって「サーフィ」って読むんですね。まんまと「えすあーるえふあい」って読んでました。
010からustreamとskypeでオンライン中継を行なうことにしました。
skypeの方、当初「9lisp」とATNDに書いてました。正しくは「qlisp」です。9lispで探された方、申し訳ありませんでしたorz
マイクが私の端末にしかなく、中継は終始グダグダになってしまいました。別途マイクを用意しようと思います。(次回準備できるかわかりませんが・・・)
グダグダな中継に付き合って下さった方々、ありがとうございました。
また次回からも行ないますので、気が向いたらのぞいてみてください。
@finalfusion さんに本を頂きました。
ありがとうございます!
頂いたのは以下の本です。
アドレナリンジャンキー プロジェクトの現在と未来を映す86パターン
入門Common Lisp―関数型4つの特徴とλ(ラムダ)計算
実は先月10日が誕生日だったのですが、その時も↓の2冊を頂ました!
ありがとうございます!
全体最適の問題解決入門―「木を見て森も見る」思考プロセスを身につけよう!
先日は熊本県立図書館から7冊頂きました。
ニートになった私は以前ほど気軽に本が買えなくなったので、ものすごくありがたいです。
しつこいようですが、@finalfusion さんありがとうございました!
(use srfi-1)(define (collatz n) (unfold (lambda (s) (= s 1)) (lambda (s) s) (lambda (s) (cond ((even? s)(/ s 2)) ((odd? s)(+ (* s 3) 1)) (else s))) n (lambda (s) (cons s '()))))(collatz 10); -> (10 5 16 8 4 2 1)
(use srfi-1)(define (collatz n) (let ((stop (lambda (s) (= s 1))) (term (lambda (s) (cond ((even? s)(/ s 2)) ((odd? s)(+ (* s 3) 1)) (else s))))) (unfold stop (lambda (s) (let ((v (term s))) (if (stop v) s (cons s (collatz v))))) term n (lambda (s) (cons s '())))))(collatz 3); -> ((3 (10 (5 (16 (8 (4 2 1) 2 1) (4 2 1) 2 1) (8 (4 2 1) 2 1) (4 2 1) 2 1) (16 (8 (4 2 1) 2 1) (4 2 1) 2 1) (8 (4 2 1) 2 1) (4 2 1) 2 1) (5 (16 (8 (4 2 1) 2 1) (4 2 1) 2 1) (8 (4 2 1) 2 1) (4 2 1) 2 1) (16 (8 (4 2 1) 2 1) (4 2 1) 2 1) (8 (4 2 1) 2 1) (4 2 1) 2 1) (10 (5 (16 (8 (4 2 1) 2 1) (4 2 1) 2 1) (8 (4 2 1) 2 1) (4 2 1) 2 1) (16 (8 (4 2 1) 2 1) (4 2 1) 2 1) (8 (4 2 1) 2 1) (4 2 1) 2 1) (5 (16 (8 (4 2 1) 2 1) (4 2 1) 2 1) (8 (4 2 1) 2 1) (4 2 1) 2 1) (16 (8 (4 2 1) 2 1) (4 2 1) 2 1) (8 (4 2 1) 2 1) (4 2 1) 2 1);; ((3;; (10;; (5;; (16;; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (16;; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (5;; (16;; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (16;; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (10;; (5;; (16;; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (16;; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (5;; (16;; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (16;; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (8;; (4 2 1) 2 1);; (4 2 1) 2 1)
(define (collatz n) (cond ((= n 1) n) ((even? n)(collatz (/ n 2))) ((odd? n)(collatz (+ (* n 3) 1))) (else n)))(collatz 10); -> 1(define (collatz n col) (cond ((= n 1)(cons n col)) ((even? n)(collatz (/ n 2)(cons n col))) ((odd? n)(collatz (+ (* n 3) 1)(cons n col))) (else col)))(collatz 10 '()); -> (1 2 4 8 16 5 10);; (unfold p f g seed tail-gen);; (if (p seed);; (tail-gen seed);; (cons (f seed);; (unfold p f g (g seed))))(use srfi-1)(define (collatz n) (unfold (lambda (s) (= s 1)) (lambda (s) s) (lambda (s) (cond ((even? s)(/ s 2)) ((odd? s)(+ (* s 3) 1)) (else s))) n (lambda (s) (cons s '()))))(collatz 10); -> (10 5 16 8 4 2 1)(use srfi-1)(define (collatz n) (let ((stop (lambda (s) (= s 1))) (term (lambda (s) (cond ((even? s)(/ s 2)) ((odd? s)(+ (* s 3) 1)) (else s))))) (unfold stop (lambda (s) (let ((v (term s))) (if (stop v) s (cons s (collatz v))))) term n (lambda (s) (cons s '())))))(collatz 3); -> ((3 (10 (5 (16 (8 (4 2 1) 2 1) (4 2 1) 2 1) (8 (4 2 1) 2 1) (4 2 1) 2 1) (16 (8 (4 2 1) 2 1) (4 2 1) 2 1) (8 (4 2 1) 2 1) (4 2 1) 2 1) (5 (16 (8 (4 2 1) 2 1) (4 2 1) 2 1) (8 (4 2 1) 2 1) (4 2 1) 2 1) (16 (8 (4 2 1) 2 1) (4 2 1) 2 1) (8 (4 2 1) 2 1) (4 2 1) 2 1) (10 (5 (16 (8 (4 2 1) 2 1) (4 2 1) 2 1) (8 (4 2 1) 2 1) (4 2 1) 2 1) (16 (8 (4 2 1) 2 1) (4 2 1) 2 1) (8 (4 2 1) 2 1) (4 2 1) 2 1) (5 (16 (8 (4 2 1) 2 1) (4 2 1) 2 1) (8 (4 2 1) 2 1) (4 2 1) 2 1) (16 (8 (4 2 1) 2 1) (4 2 1) 2 1) (8 (4 2 1) 2 1) (4 2 1) 2 1);; ((3;; (10;; (5;; (16;; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (16;; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (5;; (16;; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (16;; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (10;; (5;; (16;; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (16;; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (5;; (16;; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (16;; (8;; (4 2 1) 2 1);; (4 2 1) 2 1);; (8;; (4 2 1) 2 1);; (4 2 1) 2 1)(for-each (lambda (e) (display e) (newline)) (collatz 3))
みんな大好きラムダ計算。ラムだけ遺産。裸無駄ぁ。スlambdaンク!
昨日ついったーで、計算論 計算可能性とラムダ計算の話が出ました。難しいよねーと。
とっつきやすい本や資料はないかなー。
googleだと大学の授業の資料などが、たくさんヒットしますね。
以前amazonのレビューを読んでこの本を購入しました。
計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座)
私個人の感想は「難解・・・」。
同じ頃、ここ↓で見かけた論理と計算のしくみという本が気になります。