scheme

評価器写経終了

書き写した。なんとかうごいた。 mitscheme(edwin)とgoshではなんとかうごくらしい。mzschemeはconsがアレという致命傷なので調伏できなかった。。。(drscheme上は..しらね。) (define (add1 n) (+ 1 n))ぐらいしかテストしてないです。 ;;とりあえずtrue/fa…

memo:MzShemeでR5RSなset-cdr!とか

http://pre.plt-scheme.org/plt/doc/reference/mpairs.html consじゃなくてmconsにして、 set-mcar!とかset-mcdr!とかだといけるらしい。 せっかくMzSchemeがconsとmconsを分けている意図を わざわざねじ曲げるアレコレですけど、sicpを読むだけの人なら 意…

では、評価器を作り始めよう

でっきるかな!でっきるかな!

q3.7

(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/q3.6

;;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…

q2.29

やばかった。死ぬかと思った。 述語は分けよう。ifの中身にand orが合計二回以上でたら負けゲームなので分けること 「抽象の壁を作れ」

q2.20

たぶん大丈夫 ;;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)) )…

q1.38

オイラーだった。 (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 …

practice:sicp再会

もういちど、最初から。 読むたびに含蓄の深い言葉たちにうなってしまう。 (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…

schemeをやってて良かった。

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 …

つかれたーSICP

苦労した (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…

SICP

;;; 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) ;…

息抜きにSICPでも

;; 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…

昼下がりSICP

ちょっと楽しい ;;; 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)…

1.2あたり

;;;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…

ねおきSICP

昨日は肩こりがひどくて頭痛がやばかったのでビタミン剤を買ってきて飲んだのです マルチ+ミネラルとビタミンEと喫煙者なのでビタミンC 寝て起きたら肩こり軽減でびっくりした。欠乏してたのね。 肩こりならビタミンを摂取しませう。ビタミンEがオススメ。 …

fuckin'

;;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 '()) …

memo

手続きそのものも一つのデータ型 出力ポートそのものは一つのデータ型 今日はまだ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 …