SICP lec1a: # Lisp overview

ReZero lol

origin link sicp 1

Black box(module)


(* 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.

tips

primitive elements + : 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

varible:

(define a (* 5 5))
// the above a will be like 5 * 5(expression could be varible)

function:

(define (square x) (* x x))
(square (square (square 5)))

sweet:

(define square
        (lambda (x) (* x x))
)

this seems like every define is a process.

condition:

(if (< x 100) (display "lower than 100"))

Recursive defination (Heron square root)

Hreon : get the square root of x

  1. make a guess

  2. improve guess by get the average of guess and x/guess

  3. 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)


recursive

Important note:

(define a (* 5 5))
(define (d) (* 5 5))

output:

a -> 25
d -> d procedure
(d) -> 25
(a) -> error

Computing process

=================

心智

kinds of expressions

number symbols


lambda definations conditionals


combinations


condition

if (define (+ x u) (if (= x 0) y (+ (-1 x) (1 y)) ) )

Fibonacci

(define (fib n)
    (if (< n 2)
        n
        (+  (fib (- n 1))
            (fib (- n 1))
        )
    )
)

tips: 1+ function means add args 1 and return


Hanoi Tower

(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))
  • Post title:SICP lec1a: # Lisp overview
  • Post author:ReZero
  • Create time:2017-12-03 15:31:05
  • Post link:https://rezeros.github.io/2017/12/03/sicp/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
 Comments