Gauche でリーダーマクロ #?= を使ったデバッグ
Scheme処理系の Gauche で #?= を使って printf debug をする。 #?=expr は (debug-print expr) と置き換えられ expr を評価して結果を返す。 結果を返す前後に、評価式とその値を print する。 使用例 再帰的プロセスの factorial gosh> (define (factorial n) (if (= n 1) 1 (* …続きを読む
Scheme処理系の Gauche で #?= を使って printf debug をする。 #?=expr は (debug-print expr) と置き換えられ expr を評価して結果を返す。 結果を返す前後に、評価式とその値を print する。 使用例 再帰的プロセスの factorial gosh> (define (factorial n) (if (= n 1) 1 (* …続きを読む
問題1.14 (define (count-change amount) (cc amount 5)) (define (cc amount kinds-of-coins) (cond ((= amount 0) 1) ((or (< amount 0) (= kinds-of-coins 0)) 0) (else (+ (cc amount (- kinds-of-coins 1)) (c…続きを読む
問題1.12 パスカルの三角形(Pascal’s triangle)の上から n 行目、左から k 番目の値を求める式。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 (define (pascals-triangle n k) (if (or (= n k) (= k 1)) 1 (+ (pascals-tr…続きを読む
1.2.2 木構造再帰 木構造再帰的プロセスの (fib n)。 (define (fib n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fib (- n 1)) (fib (- n 2)))))) (fib 4) (+ (fib (- 4 1)) (fib (- 4 2))) (+ (fib 3) (fib 2)) (+ (+ (fib (- 3 1)) …続きを読む
問題1.9 再帰的プロセスと反復的プロセス 次の手続きは再帰的プロセスを生成する。 (define (+ a b) (if (= a 0) b (inc (+ (dec a) b)))) (+ 4 5) (inc (+ (dec 4) 5)) (inc (inc (+ (dec 3) 5))) (inc (inc (inc (+ (dec 2) 5)))) (inc (inc (inc (inc …続きを読む
問題1.8 立方根(cube root)を求める。 (define (cube x) (* x x x)) (define (square x) (* x x)) (define (improve guess x) (/ (+ (/ x (square guess)) (* guess 2.0)) 3.0)) (define (cube-root-iter old-guess new-guess …続きを読む
選択範囲を数値文字参照に変換するスクリプト str2numchar.vim – 川o・-・)<2nd life を参考にして HTML文字実体参照(& < > " => & < > ")の変換・逆変換をするvimスクリプトを作った。 スクリプトファイル str2htmlentity.vim…続きを読む
問題1.6 (new-if (good-enough? guess x) guess (sqrt-iter (improve guess x) x)) new-if は通常の手続きのため、作用的順序の評価では引数が先に評価されるので、 (good-enough? guess x) が真を返す場合でも (sqrt-iter (improve guess x) x) まで評価されるので、無限ループに陥…続きを読む
以前読みかけて挫折していた SICP にもう1度挑戦するために今度は blog でメモを取りながら続けてみる。 問題1.2 (/ (+ 5 4 (- 2 (- 3 (+ 6 (/ 4 5))))) (* 3 (- 6 2) (- 2 7))) ;=> -37/150 問題1.3 (define (square a) (* a a)) (define (sum-of-squares a b) …続きを読む
以下のサイトを参考にして vim で gauche を編集中にスクラッチバッファに評価結果を表示させてみた。 vimのgaucheの出力をウィンドウ分割して表示 | jigen studylog 先日のvimとgaucheの連携をちょっと改良 | jigen studylog scratch utility : 自由に開閉できる作業用バッファ管理プラグイン — 名無しのvim使い まず、scrat…続きを読む