SICP Practice

Practice 3.40

(define x 10)
(parallel-excute (lambda () (set! x (* x x)))
                 (lambda () (set! x (* x x x))))

(* 10 10)
(set! x 100)
(set! x (* 100 100 100))
; 1000000

(* 10 10)
(* 10 x x)
(set! x 100)
(set! x (* 10 100 100))
; 100000

(* 10 10)
(* 10 10 x)
(set! x 100)
(set! x (* 10 10 100))
; 10000

(* 10 x)
(* 10 10)
(* 10 10 10)
(set! x 100)
(set! x 1000)
; 1000

(* 10 10 10)
(set! x 1000)
(set! x (* 1000 1000))
; 1000000

(* 10 10 10)
(* 10 x)
(set! x 1000)
(set! x (* 10 1000))
; 10000

(* 10 10 10)
(* 10 10)
(set! x 1000)
(set! x 100)
; 100

after serializing

(set! x (* 10 10))
(set! x (* 100 100 100))
; 1000000

or

(set! x (* 10 10 10))
(set! x (* 1000 1000)))
; 1000000