2009-01-01から1ヶ月間の記事一覧
quotientって何だろ?ってずっと考えてたけど、ただの割り算であることに気がついた。
木は苦手だが、そんなこと言ってちゃいかん。
例題のテーマ選びが秀逸だ。
(define (element-of-set? x set) ; 元の定義と同じ (if (null? set) #f (or (equal? x (car set)) (element-of-set? x (cdr set))))) (define (adjoin-set x set) (cons x set)) (define (union-set s1 s2) (append s1 s2)) (define (intersection-set s1 s…
最近のお気に入りはベートーヴェンの大フーガ。
データの表現方法は色々だけど、手続きによって抽象化してやれば外からは同じように使える。ただし、データの表現方法に応じて計算量に大きな違いが出たりするので工夫のしどころだよ、というわけだ。
楽しいのぅ。
記号微分。面白いテーマだ。こんなことができるなんてすごい。
そのうち解く。
イザイの無伴奏は何て言うか、とってもクールだ。でも何だかいろんなものを切り貼りしたような印象を受けるんだよなぁ。
waveに顔を書いた。そんだけ。
問題文が意味不明だと思ったら誤訳だった。right-splitとup-splitで画像を2個並べるんじゃなくて1個だけにしてみよ、というのが題意。
大きい顔を四隅に持って来いと。
等価性って難しいね。何となくやってるとわからない部分が出てきそう。
equal?を実装する。たしかLittle Schemerあたりに出てた。
Haskellではクオートなんて気にしたことがなかったな。Lisp固有の概念かもしれぬ。
transform-painterが定義済みという前提で解答するのはとても簡単。transform-painterを作るのは難しい。
2つのpainterをどうやって重ね合わせたらいいのかと思ったら、続けて呼び出せば良いだけだった。
これを作ってみた。なかなか良し。ただ、生クリームって人力で泡立てるものじゃないな。
↓letの位置を前の方に持ってきたら再帰呼び出しのネストが深すぎるって怒られた。何でだろう? (define (split f1 f2) (let ((smaller ((split f1 f2) painter (- n 1)))) (lambda (painter n) (if (= n 0) painter (f1 painter (f2 smaller smaller))))))
何だ、図形言語と関係ないじゃないか。
お絵書きは出てこない。
前に解いたような問題だな。相変わらず図形はなし。
その昔、結果を出せと言われたんで結果って何よ?って訊いたらムッとしてたけど、答えてはくれなかったなぁ。結果って何よ?今でもわからない。
MIT-Schemeだとちょっと想定と違う動きをしてはまった。コードはMIT-Schemeで動くように書いたので、SICP的な正解とは違うかもしれない。 想定と違うところ1 hend.scmだとframe-origin, frame-edge1, frame-edge2がそれぞれorigin-frame, edge1-frame, edge2…
besideとbelowの引数の順序がややこしいが、問題そのものは簡単だった。図形言語の仕組みはParsecを思わせる。
Windowsで図形言語を使うための環境として、MIT-Schemeを使うことにした。理由はセットアップが楽だから。何しろ6問しか練習問題がないので、環境構築に苦心する意味はない。私はここに書いてある内容を参考にして、次のような作業を行った。
こちらで構築したMIT-Schemeを使って、実際に図形を描画してみる。
面倒なのでsrfiを使うことにした。
mapのネストは何回見ても混乱する。式が入れ子になることも混乱を助長している。シェルのパイプのように見えると、私にとってわかりやすいのだが。