2008-05-01から1ヶ月間の記事一覧

問題 2.39

(define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) (define fold-right accumulate) (define (fold-left op initial sequence) (define (iter result rest) (if (null?…

問題 2.38

(define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) (define fold-right accumulate) (define (fold-left op initial sequence) (define (iter result rest) (if (null?…

問題 2.37

ベクトル、マトリックス計算は知らないので理解できない。 勉強してからやる。 http://www.amazon.co.jp/%E3%81%AA%E3%81%A3%E3%81%A8%E3%81%8F%E3%81%99%E3%82%8B%E8%A1%8C%E5%88%97%E3%83%BB%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB-%E5%B7%9D%E4%B9%85%E4%B…

問題 2.36

(define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) (define (accumulate-n op init seqs) (if (null? (car seqs)) null (cons (accumulate op init (map (lambda (l) (…

問題 2.35

(define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) (define (count-leaves t) (accumulate + 0 (map (lambda (l) (if (not (pair? l)) 1 (count-leaves l))) t))) ;こ…

問題 2.34

(define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) (define (horner-eval x coefficient-sequence) (accumulate (lambda (this-coeff higher-terms) (+ this-coeff (* …

問題 2.33

(define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) (define (map p sequence) (define (square x) (* x x)) (accumulate (lambda (x y) (cons (p x) y)) null sequence…

問題 2.32

;(subsets (list 1 2 3)) ;-> (() (3) (2) (2 3) (1) (1 3) (1 2) (1 2 3)) ;となるものを作ればいいのか? (define (append list1 list2) (if (null? list1) list2 (cons (car list1) (append (cdr list1) list2)))) (define (subsets s) (if (null? s) (li…

問題 2.31

(define (square x) (* x x)) (define (square-tree tree) (tree-map square tree)) ;高階手続き無しの形。 (define (tree-map f tree) (cond ((null? tree) null) ((not (pair? tree)) (f tree)) (else (cons (tree-map f (car tree)) (tree-map f (cdr tre…

問題 2.30

(define (square x) (* x x)) ;高階手続き無しの形。 (define (square-tree tree) (cond ((null? tree) null) ((not (pair? tree)) (square tree)) (else (cons (square-tree (car tree)) (square-tree (cdr tree)))))) (square-tree (list 1 (list 2 (list …

問題 2.29

これからは問題ごとに記事にする 以前のものもそう直す。 (define (make-mobile left right) (list left right)) (define (make-branch length structure) (list length structure)) (define mobile1 (make-mobile (make-branch 3 6) (make-branch 9 2))) (d…

問題 2.28

(define (append list1 list2) (if (null? list1) list2 (cons (car list1) (append (cdr list1) list2)))) ;2.17で目的の機能を果たすものを定義した。 (define (flattern items) (append (if (pair? (car items)) (flattern (car items)) (cons (car items…

問題 2.27

(define (reverse items) (define (reverse-iter i p) (if (null? i) p (reverse-iter (cdr i) (cons (car i) p)))) (reverse-iter items null)) (define (deep-reverse items) (define (reverse-iter i p) (if (null? i) p (reverse-iter (cdr i) (cons (if…

問題 2.26

(define (append list1 list2) (if (null? list1) list2 (cons (car list1) (append (cdr list1) list2)))) (define x (list 1 2 3)) (define y (list 4 5 6)) ;(append x y) ;予想は普通に ;(1 2 3 4 5 6) (append x y) ;-> (1 2 3 4 5 6) ;期待通り。 ;(co…

金沢行き途中。富山。

金沢で四芸祭というのがあるのでいく。 電車が富山県内を抜ける前に、emobileでつないで急いでかく。 ちなみに富山といえば、true tearsとpersonaの舞台だ。 なかなかきれいな都市らしい。 emobileもつながるし、先端技術もあるらしい(秋葉駅内に広告がある)…

問題 2.25

(define list1 (list 1 3 (list 5 7) 9)) ;list1 ;-> (1 3 (5 7) 9) ;(car (cdr (car (cdr (cdr list1))))) ;-> 7 (define list2 (list (list 7))) ;list2 ;-> ((7)) ;(car (car list2)) ;-> 7 (define list3 (list 1 (list 2 (list 3 (list 4 (list 5 (list…

問題 2.24

(list 1 (list 2 (list 3 4))) ;-> (1 (2 (3 4))) ;consにすると、 (cons 1 (cons 2 (cons 3 4))) ;-> (1 2 3 . 4) ;にているようで違う。 ;どのような意味の違いがあるのか? (list 1 (list 2 (list 3 4))) ;-> (1 (2 (3 4))) (cons 1 (cons (cons 2 (cons …

問題 2.23

(define (fe f l) (if (pair? l) (void (f l) (fe f (cdr l))))) (fe (lambda (x) (display x) (newline)) (list 57 321 88)) ;-> ;(57 321 88) ;(321 88) ;(88)

問題 2.22

(define (square x) (* x x)) (define (square-list items) (define (iter things answer) (if (null? things) answer (iter (cdr things) (cons answer (square (car things)))))) (iter items null)) ;(square-list (list 1 2 3 4 5)) ;->(((((() . 1) . 4…

問題 2.21

(define (map proc items) (if (null? items) null (cons (proc (car items)) (map proc (cdr items))))) (define (scale-list items factor) (map (lambda (x) (* x factor)) items)) (define (square x) (* x x)) (define (square-list items) (if (null? …

問題 2.20

(define (same-parity s . l) (define (same-parity-iter ss ll) (cond ((null? ll) null) ((= (remainder (car ll) 2) ss) (cons (car ll) (same-parity-iter ss (cdr ll)))) (else (same-parity-iter ss (cdr ll))))) (cons s (same-parity-iter (remainde…

問題 2.19

(define us-coins (list 50 25 10 5 1)) (define uk-coins (list 100 50 20 10 5 2 1 0.5)) (define (cc amount coin-values) (define (no-more? cv) (null? cv)) (define (first-denomination cv) (car cv)) (define (except-first-denomination cv) (cdr c…

問題 2.18

(define squares (list 1 4 9 16 25)) (define (append list1 list2) (if (null? list1) list2 (cons (car list1) (append (cdr list1) list2)))) ;初めに以下を考えた。 (define (reverse items) (if (null? (cdr items)) items (cons (reverse (cdr items)…

問題 2.17

(define (last-pair items) (if (null? (cdr items)) items (last-pair (cdr items)))) (define squares (list 1 4 9 16 25)) (last-pair squares)

問題 2.7

(define (upper-bound x) (max (car x) (cdr x))) (define (lower-bound x) (min (car x) (cdr x))) ;(define (make-interval x y) (cons (mix x y) (max x y))) ;make-intervalが上なら、以下のようにかける。 ;(define (lower-bound x) (car x)) ;(define …

問題 2.6

(define zero (lambda (f) (lambda (x) x))) (define (add-1 n) (lambda (f) (lambda (x) (f ((n f) x))))) ;これは問題のいみがわからないが、たぶん関数を作用させる数なんだろう。 ;よってone,twoの定義は (define one (lambda (f) (lambda (x) (f x)))) …

問題 2.5

;やべー、これは問題の日本語が意味わからない。 ;とりあえず、自分の問題解釈でとく (define (pow x y) (define (pow-iter x y p) (if (<= y 0) p (pow-iter x (- y 1) (* p x)))) (pow-iter x y 1)) (define (cons a b) (* (pow 2 a) (pow 3 b))) (define …

問題 2.4

(define (cons x y) (lambda (m) (m x y))) (define (car z) (z (lambda (p q) p))) ;(car (cons x y))->xになるのを説明せよといわれても、 ;コードをみれば自明であるとしか言いようがない。 ;これにたいするcdrは (define (cdr z) (z (lambda (p q) q))) …

問題 2.3

;問題の意図が良くわからない。 (define (square x) (* x x)) (define (average x y) (/ (+ x y) 2)) (define (make-segment s e) (cons s e)) (define (start-segment seg) (car seg)) (define (end-segment seg) (cdr seg)) (define (make-point x y) (con…

問題 2.2

(define (average x y) (/ (+ x y) 2)) (define (make-segment s e) (cons s e)) (define (start-segment seg) (car seg)) (define (end-segment seg) (cdr seg)) (define (make-point x y) (cons x y)) (define (x-point p) (car p)) (define (y-point p) (…