Scheme

#!/usr/local/bin/gosh (define (main argv) (display "Hello, world") (newline)) Gaucheは、デフォルトでmainを実行してくれるみたい(嬉)in main.c GuileのSharpBang lineは未だ好きになれないなぁ。!# って。

exercise 1.6

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

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…

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 (+…

MIT scheme and Guile has different behavior about null?

R5RS said : (null? obj) if obj is an empty list then #t else #f but, look Mit scheme. seem she treat #f as empty list. ; guile (null? #f) ; #f (eq? #f '()) ; #f ; mit scheme (null? #f) ; #t (eq? #f '()) ; #t I just take memo, but thise are…

split

(define (split str c) (let *1 (split (substring (+ 1 n) c)))))) *1:n (string-index str c))) (if (not n) (list str) (append (list (substring str 0 n

units count

thx cr4m3r (define (units-count units amount) (if (null? units) '() (let *1 (newline) (units-count (cdr units) (remainder amount n))))) *1:n (car units))) (display n) (display ": ") (display (qutient amount n

range

(define (range a b) (if (

(display "Hello world") (newline)