Arantium Maestum

プログラミング、囲碁、読書の話題

2016-06-07から1日間の記事一覧

SICPの勉強 問題2.7~11

2.7 (defn make-interval [a b] [a b]) (defn upper-bound [c] (first c)) (defn lower-bound [c] (last c)) 2.8 (defn sub-interval [x y] (max-interval (- (upper-bound x) (lower-bound y)) (- (lower-bound x) (upper-bound y)))) 2.10 (defn div-inter…

SICPの勉強 問題2.4~6

2.4 cons, car, cdrをclosureを使って作成: (defn cons [x y] (fn [m] (m x y))) (defn car [z] (z (fn [p q] p))) (defn cdr [z] (z (fn [p q] q))) 2.5 自然数に限定してcons, car, cdrを2と3の積を使って表す。 (defn cons [x y] (loop [x x y y r 1] (c…

SICPの勉強 問題2.2

線のデータを定義。 (defn make-segment [start-point end-point] [start-point end-point]) (defn start-segment [segment] (first segment)) (defn end-segment [segment] (last segment)) その前提となる点のデータを定義。 (defn make-point [x y] [x y]…

SICPの勉強 問題2.1

有理数のデータタイプがマイナスな場合は分子の方に必ず負号がくるように修正する。 まずは元のmake-rat関数をclojureで書く: (defn gcd [a b] (let [c (rem a b)] (if (zero? c) b (recur b c)))) (defn make-rat [n d] (let [g (gcd n d)] [(/ n g) (/ d …