origin link sicp 1
(* x (+ a b)) First scene: Every parentheses is a container called black box, we can take a and b as to varible, like number, electric signal, whatever, we add them, then mul or expand them x times.
+ : operator
17.4 : number means of combination
(+ 3 17.4 5) means of abstration It’s a tree, but we write it as a plain text formation.
(define a (* 5 5)) // the above a will be like 5 * 5(expression could be varible)
(define (square x) (* x x)) (square (square (square 5)))
(define square (lambda (x) (* x x)) )
this seems like every define is a process.
(if (< x 100) (display "lower than 100"))
Hreon : get the square root of x
make a guess
improve guess by get the average of guess and x/guess
good-enough? done : improve guess
tips: good-enough? how close between x/guess (< abs (- (square guess) x) .001)
Analyze as a tree: (root 2) (try 1 2) (try (improve 1 2) 2) (try 1.5 2)
(define a (* 5 5)) (define (d) (* 5 5))
a -> 25 d -> d procedure (d) -> 25 (a) -> error
lambda definations conditionals
if (define (+ x u) (if (= x 0) y (+ (-1 x) (1 y)) ) )
(define (fib n) (if (< n 2) n (+ (fib (- n 1)) (fib (- n 1)) ) ) )
tips: 1+ function means add args 1 and return
(define (dohanoi n to from using) (if (> n 0) (begin (dohanoi (- n 1) using from to) (display "move ") (display from) (display " --> ") (display to) (newline) (dohanoi (- n 1) to using from) #t) #f)) (define (hanoi n) (dohanoi n 3 1 2))