scheme
書き写した。なんとかうごいた。 mitscheme(edwin)とgoshではなんとかうごくらしい。mzschemeはconsがアレという致命傷なので調伏できなかった。。。(drscheme上は..しらね。) (define (add1 n) (+ 1 n))ぐらいしかテストしてないです。 ;;とりあえずtrue/fa…
http://pre.plt-scheme.org/plt/doc/reference/mpairs.html consじゃなくてmconsにして、 set-mcar!とかset-mcdr!とかだといけるらしい。 せっかくMzSchemeがconsとmconsを分けている意図を わざわざねじ曲げるアレコレですけど、sicpを読むだけの人なら 意…
でっきるかな!でっきるかな!
(define (make-joint account ourpass genpass) (define (withdraw amo) ((account 'withdraw genpass) amo)) (define (deposit amount) ((account 'deposit genpass) amo)) (define (dispatch m p) (if (eq? ourpass p) (cond ((eq? m 'withdraw) withdraw)…
;;q3.5 ;;そんなわたしはMzScheme派 (require (lib "27.ss" "srfi")) (define (square x) (* x x)) (define random random-real) (define (random-in-range low high) (let ((range (- high low))) (+ low (* (random) range)))) (define (monte-carlo trail…
やばかった。死ぬかと思った。 述語は分けよう。ifの中身にand orが合計二回以上でたら負けゲームなので分けること 「抽象の壁を作れ」
たぶん大丈夫 ;;q2.20 (define (same-parity x . ls) (let ((chk (if (even? x) even? (lambda (y) (if (even? y) #f #t)) ))) (define (iter l) (if (null? l) '() (if (chk (car l)) (cons (car l) (iter (cdr l)) ) (iter (cdr l) )))) (iter (car ls)) )…
オイラーだった。 (define (kyusu x) (if (= (modulo (+ x 1) 3) 0) (* 2 (+ 1 (floor (/ x 3)))) 1 ) ) (kyusu 1) (kyusu 2) (kyusu 3) (kyusu 4) (kyusu 5) (kyusu 6) (kyusu 7) (kyusu 8) (kyusu 9) (kyusu 10) (kyusu 11) (kyusu 12) (define (cont-frac…
気づいたこと 「そのままコードにすること」 ;;;q.1.33 (define (filtered-accumlate-r filter combiner null-value term a next b) (if (filter a b) null-value (combiner (term a) (filtered-accumlate-r filter combiner null-value term (next a) next …
もういちど、最初から。 読むたびに含蓄の深い言葉たちにうなってしまう。 (define (pascal a b) (cond ((or (= b 1) (= a b) (<= a 2)) 1) (else (+ (pascal (- a 1) (- b 1)) (pascal (- a 1) (- b 0)) ) ) ) ) ;テスト (define (test) (begin (display "p…
vb程度のループロジックなら朝飯前になってた。 do loopってどんなけsugarやねん!とか思える様になってた。 sicpはマジでオヌヌメ。問題がいい気がする。 最後までscheme走ったらどうなるのかと自分に期待だわ。 なかなか時間とれねぇけどな。
;;; q2.53 (list 'a 'b 'c 'd) (list (list 'george)) (car '((x1 x2) (y1 y2))) (cdr '((x1 x2) (y1 y2))) (cadr '((x1 x2) (y1 y2))) (pair? (car '(a short list))) (memq 'red '((red shoes) (blue socks))) (memq 'red '(red shoes blue socks)) ;;; q2…
;;; q2.41 ;;3つの組み合わせを作ります (define (make-trio n) (flatmap (lambda (i) (flatmap (lambda (j) (map (lambda (k) (list k j i)) (enumerate-interval 1 (- j 1)))) (enumerate-interval 1 (- i 1)))) (enumerate-interval 1 n)) ) ;(caddr (lis…
ねむい ;;何だか自信無くなって来ました。。。。 ;;; q2.33 (define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence)))) ) ;;(accumulate + 0 (list 1 2 3 4 5)) (define (map p …
苦労した (define (reverse ls) (reverse-itr ls '()) ) (define (reverse-itr ls ans) (if (null? ls) ans (reverse-itr (cdr ls) (cons (car ls) ans)) ) ) (define (deep-reverse ls) (deep-reverse-itr ls '()) ) (define (deep-reverse-itr ls ans) (if…
;;; q2.21 (define (square-list items) (if (null? items) '() (cons (* (car items) (car items)) (square-list (cdr items))) ) ) (define (square-list items) (map (lambda (x) (* x x) ) items) ) (square-list (list 1 2 3)) (define (square x) (* x…
ちょっと混乱するわ ;;; q2.4 (define (cons x y) (lambda (m) (m x y))) ;手続きを引数 (define (car z) (z (lambda (p q) p))) ;手続きzにlambda手続きを渡す (define (cdr z) (z (lambda (p q) q))) (define a (cons 1 2)) ;;=>lam (a) (a 1 2) (car a) ;…
;; q2.1 ;;正負を正規化するmake-ratの改良版 (define (make-rat n d) (cond ;; (((and (> n 0) (> d 0))(cons n d));両者+ならそのまま ((and (< n 0) (< d 0)) (cons (* -1 n) (* -1 d)));両者-なら両者-で ((and (> n 0) (< d 0)) (cons (* -1 n) (* -1 d…
ちょっと楽しい ;;; 1.3.4 値として返される手続き (define (average a b) (/ (+ a b) 2) ) (define (square a) (* a a) ) (define (average-dump f) (lambda (x) (average x (f x)))) ((average-dump square) 10) ;;; q1.41 (define (double f) (lambda (x)…
;;;q1.23 ;;;prime-next (define (prime-next n) (if (= n 2) 3 (+ n 2) ) ) ;;;+1していた物をprime-nextに置換えしたprime?内蔵 (define (prime?-clever n) (define (prime?-itr n c) (cond ((= (remainder n c) 0) #f) ((>= c (/ n c)) #t) (else (prime…
最初はリストをhogehogeして最終的にリスト内をクロールして足していけばいいじゃん! とか思ったけど入れ子リストがうまく扱えませんでした。。。。 ;;;1.12 (define (fact n) (if (= n 0) 1 (* n (fact (- n 1))) ) ) (define (combination n k) (/ (fact n…
昨日は肩こりがひどくて頭痛がやばかったのでビタミン剤を買ってきて飲んだのです マルチ+ミネラルとビタミンEと喫煙者なのでビタミンC 寝て起きたら肩こり軽減でびっくりした。欠乏してたのね。 肩こりならビタミンを摂取しませう。ビタミンEがオススメ。 …
;;mzscheme (require (lib "trace.ss")) (define save '()) (define (fact2 x) (if (= x 1) (call/cc (lambda (cc) (set! save cc) 1 ) ) (* x (fact2 (- x 1))) ) ) (trace fact2) ;begeinはプロンプト見にくいから (begin (newline) (fact2 10) ) (begin (…
抽象とモジュール化ってことか。脊髄反射でぽst。 継承/インターフェースとかと同じパラダイムなのね 関数の引数に関数を指定すること。schemeだと手続きと変数とは全く同じ扱いだからかなりシームレス。 ;;普通版 (define (sum-integers a b) (if (> a b) 0…
目を潤ませてこっちをみないでくれ。 京アニ智代アフターをBGVにしてたら死にそうだ。何このソープ。もうやだ。 俺は信じません。 リスト反転は標準装備だけど練習 ;;;だいぶなれてきたがしんどいな (define (reverse-tail ls) (let loop((ls ls) (rls '()) …
手続きそのものも一つのデータ型 出力ポートそのものは一つのデータ型 今日はまだbegin句とかに安心する私はまだまだだ。 (define display3 (lambda (arg1 arg2 arg3) (begin (display arg1) (display " ") (display arg2) (display " ") (display arg3) (ne…
やってもうた。。。日本語は思ったより普通かも。もっとおぞましい物を予想してた。 とりあえず日本語の文法に則る日本語っぽい。ただ、言葉選びがひどい感じだ。 emacsを使うのであればここに行き着くのはよくあるパターンかと存じます。 半年ぐらいかけま…
はてなのパースか? 記事限界とかあるのかも。 以下にschemeで出力したフラクタルdatをコピペしてます gnuplotとかで 0 0 0.0234375 -0.015625 0.0078125 -0.0390625 -0.0078125 -0.0625 -0.03125 -0.046875 -0.046875 -0.0703125 -0.0703125 -0.0546875 -0.0…
シンプルだわ scheme-mode acp-mode font-lock-mode flymake complete-elとか まぁたぶんフル装備あとputtyを256色モードにした
schemeの実行環境をcolinuxとcygwinに構築 flymakeはなんだかMeadowさんで動かないのでschemeな時はcolinuxかcygwinのemacsになるのかなぁ これは地獄への道の予感。だってだって Instructor's Manual to Accompany Structure & Interpretation of Computer …