;;; Copyright Igor Rivin 2004, 2005, all rights reserved. (load "utils.ss") ;; prints out all positive integers.... (define inf-loop (lambda (n) (let ((nn n)) (let ((x (call/cc (lambda (k) k)))) (display nn) (newline) (set! nn (+ 1 nn)) (x x))))) (define inf-loop2 (lambda (n m) (let ((nn n) (mm m)) (let ((x (call/cc (lambda (k) k)))) (display nn) (newline) (set! nn (+ 1 nn)) (set! mm (- mm 1)) (if (> mm 0) (x x)))))) (define dog (list->vector '(1 2 3))) ; computes the nth fibonacci number (non-recursively). (define fib (lambda (n) (let fibaux ((a 0) (b 1) (m 0)) (if (= m n) a (fibaux b (+ a b) (+ m 1)))))) ;; Newton's method for computing square roots. (define mysqrt (lambda (N start tol numiter) (if (< (abs (- (* start start) N)) tol) start (let ((iter (lambda (x)(* 0.5 (+ x (/ N x)))))) (let sqrtit ((guess start)(iterleft numiter)) (let ((newguess (iter guess)) (newiter (- iterleft 1))) (if (or (< (abs (- newguess guess)) (* tol guess)) (<= newiter 0)) guess (sqrtit newguess newiter)))))))) (define fact (lambda (n) (let factaux ((prod 1) (n n)) (if (= n 0) prod (factaux (* prod n) (- n 1))))))