Programmer's Note

コード読み書きの備忘録。

sicp

[SICP] SICP第2章読了

第2章の最後の課題は残しているが、読了した。データの抽象化の威力をまざまざと見せられた。 なんといってもこの章のクライマックスの多項式の演算プログラム。 データの型およびClojureでいうマルチメソッドのシステムを自前で用意して、実にエレガントに…

mapのループをforで表現する

前回(mapと再帰で木構造を扱う - Programmer's Note)は、mapと再帰で木構造を扱う処理を書いたが、mapはシーケンスを順になめていく高階関数であって、いわゆるコレクションを扱うfor文と変わらない。 Clojureにもforマクロは用意されていて、かなり表現力…

mapと再帰で木構造を扱う

SICP楽しすぎるな。 第2章の途中、mapを使って木構造のデータ処理を紹介していて、えらく感動した。 題材は以下のとおり、木構造の中の全要素に対して任意のfactorを掛ける関数scale-treeを作ること。 (def ttree (list 1 (list 2 (list 3 4) 5) (list 6 7)…

recordを使ってデータ構造をつくる

SICPまじ楽しいな。この本は、一読して内容を理解するだけじゃなくて、手を動かしてコードを写経したり練習問題をやると、純粋にプログラミングの楽しさを味わえる。本質的な部分(パラダイム)を濃密に扱っているので、数学と一緒で、手を動かして思考を追…

SICP第一章読了

SICP第1章を読了した。演習問題もコンプリート! 言語はSchemeではなくClojureを使ったのでClojureのいい練習にもなった。 振り返ると、プログラミングの教材として、構成が実によく考えられていて感動すら覚える。 一級品の少年漫画やRPGなみのストーリー…

Clojureでパスカルの三角形

SICP遅々と読む。練習問題にパスカルの三角形の要素を計算せよ(再帰を使って)、というのがある。 フィボナッチ数列の次くらいに手軽な題材でいろいろ試せて遊べるなと。 Clojureらしい解き方は、やっぱ遅延シーケンスを作るやり方だろうなと。 出力形式は…

sicpの導入部

MITのプログラミングの授業で使われていた伝説的な教科書、「Structure and Interpretation of Computer Programs」、略してsicpを読み始めた。 いわゆるプログラミングの古典的名著として数えられ、「ハッカーと画家」のポール・グレアムもAmazonレビューで…