SICP

exercise 1.6

平方根を求めるアルゴリズム sqrt-root. ビルトイン関数に含まれているのだけど、アルゴリズムの演習って事で、 再実装してみる。 まずは、Schemeで。 (define (sqrt n) (define (abs n) (if (improve guess n) (average guess (/ n guess))) (define (good-…

exercise 1.3

(define sum +) (define (square x) (* x x)) (define (foo a b c) (let x y))))) (sum (square (car alist">*1 (square (cadr alist))))) (define (main args) (display (foo (string->number (cadr args)) (string->number (caddr args)) (string->number …

Scheme (define (fib n) (if *1 (fib (- n 2))))) Python def fib1(n): return n <= 2 and 1 or fib1(n-1) + fib1(n-2) def fib2(n): if n <= 2: return 1 else : return fib2(n-1) + fib2(n-2) Haskell でパターンマッチを利用しての関数宣言。 fib :: Inte…

abs の実装。Scheme (define (fib n) (cond ((> n 0) n) ((= n 0) 0) ((< n 0) (- n)))) (define (fib n) (if (< n 0) (- n) n)) Ocaml let abs = fun x -> if x < 0 then -x else x;; Python abs1 = lambda x: x < 0 and -x or x def abs2(n) : if n < 0: r…

;; python で書いてみる。 def square(x): return x*x def sum_of_squares(x, y): return square(x) + square(y) def f(a): return sum_of_squares(a+1, a*2) # or # f = lambda a:sum_of_sequence(a+1, a*2) f(5) TODO : search about 遅延評価メカニズム …

Hello world と平行して SICP も毎日ちょっとずつ ;; 1.1.5 (define (square x) (* x x)) (define (sum-of-squares x y) (+ (square x) (square y))) (define (f a) (sum-of-squares (+ a 1) (* a 2))) (f 5) (f 5) の式を展開してみる。 (sum-of-squares (+…