さかもとのブログ

つらつらと

アンデルセン

童話作家ハンス・クリスチャン・アンデルセンの物語。裸の王様、みにくいアヒルの子、人魚姫などのアンデルセンの代表作も劇中にでてくる。 音楽、ダンスがとてもすばらしく、ぜひ子供たちに見てもらいたい作品。 私は、5月に、四季劇場「秋」で観劇しました…

SICP演習問題5.22

今回の問題は (define (append lis1 lis2) (if (null? lis1) lis2 (cons (car lis1) (append (cdr lis1) lis2)))) (define (append! x y) (set-cdr! (last-pair x) y) x) という,2種類のappendをレジスタ計算機で実装すること. append (define append-mach…

SICP演習問題5.21

いままではif文の判定(2つしか分岐がないもの)をやっていたので,少し苦戦した. a 今回の問題は (define (count-leaves tree) (cond [(null? tree) 0] [(not (pair? tree)) 1] [else (+ (count-leaves (car tree)) (count-leaves (cdr tree)))])) をレジス…

SICP演習問題5.19(修正版)

さっき書いたエントリでは,脱出するところが不自然だったことに気付き修正した. 今回の問題はcall/ccを使えば簡単にできる.使っていいのかな?まぁいっか. 問題5.17をベースに今回の問題を解く.5.17はlabelをinstructionに付随させるものなので,その性…

SICP演習問題5.19

今回の問題はcall/ccを使えば簡単にできる.使っていいのかな?まぁいっか. 問題5.17をベースに今回の問題を解く.5.17はlabelをinstructionに付随させるものなので,その性質を使う.というか,むしろ,この問題のための問題だったのか? 今回追加するものと…

SICP演習問題5.18

夏休みだけに、ちょっと子供日記風に今日の天気を書いてみる。 今日は久しぶりに太陽さんに会いました。太陽さんが出てきたのでとってもとっても暑いです。ぼくは冬の太陽さんは大好きだけど、夏の太陽さんはきらいです。 僕の本心です。 早く夏よ去れ〜とい…

小林秀雄講演CD第7巻

小林秀雄講演 第7巻―ゴッホについて/正宗白鳥の精神 [新潮CD] (新潮CD 講演 小林秀雄講演 第 7巻)作者: 小林秀雄出版社/メーカー: 新潮社発売日: 2007/07メディア: 単行本購入: 3人 クリック: 19回この商品を含むブログ (9件) を見る 聴いた。1枚目のゴッホ…

SICP演習問題5.16

現時点でのmake-new-machine. 今回追加するのは,exercise5.16のもの. (define (make-new-machine) (let ((pc (make-register 'pc)) (flag (make-register 'flag)) (stack (make-stack)) (the-instruction-sequence '()) (instruction-count 0) ;; exercise…

SICP演習問題5.15

命令の回数を数える問題. 変更点 make-new-machineに変数instruct-countを追加 (define (instruct-count-up) (inc! instruct-count))をmake-new-machineに追加 make-new-machineのexecuteに(instruct-count-up)を追加 (define (print-instruct-count) (prin…

SICP演習問題5.14

(define (fact-print-stack n) (define fact-machine (make-machine '(n val continue) (list (list '= =) (list '- -) (list '* *)) '(fact (assign continue (label fact-done)) fact-loop (test (op =) (reg n) (const 1)) (branch (label base-case)) (s…

このぶろぐ

もともとはちゃんこなべのように、いろいろ放り込んでいい味をだそうと思い、このタイトルにしたんだけれど、これじゃ闇なべだな....

SICP演習問題5.17

やや苦戦したので、ちょっとだけ参照した. 参照元 http://www29.atwiki.jp/sicpstudygroup/pages/90.html instにlabelをくっつけるのいいのは参照でわかったけれど、データ構造はどうしようかと悩んだ. 今回変更するのは, make-new-machineに変数labelを…

SICP演習問題5.13

とりゃっとちょっと言ってみた. 今回の問題は簡単?だった. 変更点 make-machine make-assign make-save make-primitive-procedure 方針としては make-machine変数の数を減らす {make-assign, make-save, make-primitive}を実行するときにそのレジスタが作…

SICP演習問題5.12

もっとスマートにやりたいものです... assembleが実行されるときに一緒に作られるようにした. なので,それぞれの命令に追加した. (define (make-machine register-names operations controller-text) (let ((machine (make-new-machine))) (for-each (lamb…

SICP演習問題5.11

SICPと関係ないけれど,早く夏が終わらないかなぁ..... a (define fib-machine (make-machine '(continue val n) (list (list '< <) (list '= =) (list '- -) (list '+ +) (list 'print print)) '(controller (assign continue (label fib-done)) fib-loop (…

SICP演習問題5.9

;; exercise 5.9 (define (make-operation-exp exp machine labels operations) (let ((operation (lookup-primitive (operation-exp-op exp) operations)) (aprocs (map (lambda (e) (if (not (label-exp? e)) (make-primitive-exp e machine labels) (erro…

SICP演習問題5.7,5.8

計算機モデルが動いたので,問題5.7をやる. 5.7 ;; exercise 5.7 (section5.1) ;; a (define expt-machine (make-machine '(b n val continue) (list (list '= =) (list '- -) (list '* *)) '((assign continue (label expt-done)) expt-loop (test (op =) …

SICP5章2節計算機モデル

問題5.8を入れた計算機モデル ;; register machine simulator (define (make-machine register-names ops controller-text) (let ((machine (make-new-machine))) (for-each (lambda (register-name) ((machine 'allocate-register) register-name)) registe…

小林秀雄講演

現代思想について―講義・質疑応答 (新潮CD 講演 小林秀雄講演 第4巻)作者: 小林秀雄出版社/メーカー: 新潮社発売日: 2004/01メディア: ?購入: 4人 クリック: 63回この商品を含むブログ (21件) を見る 聴いた。小林秀雄は本当に素直で本当に自由だ。 それでい…

SICP演習問題5.1~5.6

やっと5章です.もう少しで終わりなのです.ついに! 5.1,5.4,5.5はノートに書いた. 5.2 ;; exercise 5.2 (controller init (assign p (const 1)) (assign c (const 1)) test-c (test (op >) (reg c) (const n)) (branch (label init-done)) (assign t (op…

SICP演習問題4.76~4.79

パスします. 4.76は少し取り組んでみて、以下のような感じになるのかぁという感じでですが、merge-frameの実装がいまいち浮かばず... (define (conjoin2 conjoins frame-stream) (if (empty-conjunction? conjoins) frame-stream (let ((join1 (qeval (first…

SICP演習問題4.75

4章もあとちょっと ;; exercise 4.75 (define (uniquely-asserted operands frame-stream) (stream-flatmap (lambda (frame) (let ((result (qeval (uniquely-query operands) (singleton-stream frame)))) (cond ((stream-null? result) the-empty-stream) …

SICP演習問題4.74

;; exercise 4.74 (define (simple-stream-flatmap proc stream) (simple-flatten (stream-map proc stream))) (define (simple-flatten stream) (stream-map stream-car (stream-filter pair? stream)))

崖の上のポニョを見た

ポニョを見た。 崖の上のポニョ [DVD]出版社/メーカー: ウォルトディズニースタジオホームエンターテイメント発売日: 2009/07/03メディア: DVD購入: 16人 クリック: 167回この商品を含むブログ (332件) を見る映画館でも見たけれど,つたやにいったらあった…

SICP演習問題4.72, 4.73

4.72 disjoinと,stream-flatmapがストリームを差込にするのは,s1が無限ストリームになるとき,stream-map-delayedではおかしくなるため. 例は, 少し考えたけど思い浮かばず... 4.73 無限ループ

SICP演習問題4.71

正直言ってここらへんの問題はつまらない... delay演算を陽に使用しない場合とする場合での違いが一番わかるのは,質問が無限ループになるとき. つまり,P.276のような場合に振る舞いがおかしくなる. "無限ループ"なのでもともと正しいものではない (asser…

SICP4章4節質問システムの実装

他の評価器の実装を張っている人はちらほらいるけれど,質問システムは見た限りいないので,一応張っておこう. ちょっと長いけれど. (load "./stream.scm") (load "./evaluator.scm") (define true #t) (define false #f) (define user-initial-environmen…

継続は多値で返ってくる

継続を呼び出すと,継続に渡された変数は”多値”で返ってくる. そのため,receiveを使わなければ,すべてを受け取ることはできない(と思われる). 以下の簡単プログラムで実証してみた. (define cont #f) (receive (a b) (call/cc (lambda (c) (set! cont c…

SICP演習問題4.64, 4.65, 4.66, 4.68

4.67, 4.69はパスします。 exercise 4.64 ;; exercise 4.64 (assert! (rule (outranked-by2 ?staff-person ?boss) (or (supervisor ?staff-person ?boss) (and (outranked-by2 ?middle-manager ?boss) (supervisor ?staff-person ?middle-manager))))) (outr…

SICP演習問題4.61, 4.62

なんとかquery評価器を実装した. そのままの実装では動かないので,注意. 変更点は (define false #f) (define true #t)を追加 self-evaluating? に ((boolean? exp) #t) を追加 (define extend-in-underlying-scheme extend)を追加して,もともとのextend…