All files that start with sicp- are official SICP code
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
(load "util.scm")
|
(load "util.scm")
|
||||||
(load "misc/ch5-compiler.scm")
|
(load "misc/sicp-compiler.scm")
|
||||||
|
|
||||||
(display "\nex-5.31 - save-and-restore-for-apply\n")
|
(display "\nex-5.31 - save-and-restore-for-apply\n")
|
||||||
|
|
||||||
@@ -65,29 +65,6 @@ ev-appl-did-operator-no-restore
|
|||||||
|
|
||||||
(display "\nex-5.33 - compare-factorial-definitions\n")
|
(display "\nex-5.33 - compare-factorial-definitions\n")
|
||||||
|
|
||||||
(define (compile-to-file code target linkage file-name)
|
|
||||||
(set! label-counter 0)
|
|
||||||
(define (write-list-to-port xs port)
|
|
||||||
(if (null? xs)
|
|
||||||
'()
|
|
||||||
(begin
|
|
||||||
(display (car xs) port)
|
|
||||||
(display "\n" port)
|
|
||||||
(write-list-to-port (cdr xs) port))))
|
|
||||||
(if #t ; #t means write to file; #f means don't write to file
|
|
||||||
(let* ((compile-result (compile code target linkage))
|
|
||||||
(assembly-insts (statements compile-result))
|
|
||||||
(port (open-output-file file-name)))
|
|
||||||
(write-list-to-port assembly-insts port)
|
|
||||||
(display "[")
|
|
||||||
(display file-name)
|
|
||||||
(display "]\n")
|
|
||||||
(close-output-port port))
|
|
||||||
(begin
|
|
||||||
(display "[")
|
|
||||||
(display file-name)
|
|
||||||
(display "]\n"))))
|
|
||||||
|
|
||||||
; Uncomment the following lines to write the assembly code for the to methods
|
; Uncomment the following lines to write the assembly code for the to methods
|
||||||
; into files.
|
; into files.
|
||||||
|
|
||||||
@@ -446,6 +423,3 @@ ev-appl-did-operator-no-restore
|
|||||||
|
|
||||||
(display "[answered]\n")
|
(display "[answered]\n")
|
||||||
|
|
||||||
(display "\nex-5.39\n")
|
|
||||||
|
|
||||||
(display "\nex-5.40\n")
|
|
||||||
17
ex-5_39-xx.scm
Normal file
17
ex-5_39-xx.scm
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
(load "util.scm")
|
||||||
|
(load "misc/sicp-compiler.scm")
|
||||||
|
|
||||||
|
(display "\nex-5.39\n")
|
||||||
|
|
||||||
|
(let ((x 3) (y 4))
|
||||||
|
(lambda (a b c d e)
|
||||||
|
(let ((y (* a b x))
|
||||||
|
(z (+ c d x)))
|
||||||
|
(* x y z))))
|
||||||
|
|
||||||
|
(display "\nex-5.40\n")
|
||||||
|
|
||||||
|
|
||||||
|
; (display "\nex-5.41\n")
|
||||||
|
; (display "\nex-5.42\n")
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
;;;;Then you can compile Scheme programs as shown in section 5.5.5
|
;;;;Then you can compile Scheme programs as shown in section 5.5.5
|
||||||
|
|
||||||
;;**implementation-dependent loading of syntax procedures
|
;;**implementation-dependent loading of syntax procedures
|
||||||
(load "misc/ch5-syntax.scm") ;section 4.1.2 syntax procedures
|
(load "misc/sicp-syntax.scm") ;section 4.1.2 syntax procedures
|
||||||
|
|
||||||
|
|
||||||
;;;SECTION 5.5.1
|
;;;SECTION 5.5.1
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
;;;;FIRST A LOT FROM 4.1.2-4.1.4
|
;;;;FIRST A LOT FROM 4.1.2-4.1.4
|
||||||
|
|
||||||
;(load "ch5-syntax.scm"); ;section 4.1.2 syntax procedures
|
;(load "sicp-syntax.scm"); ;section 4.1.2 syntax procedures
|
||||||
(load "misc/sicp-eceval-syntax.scm") ;section 4.1.2 syntax procedures
|
(load "misc/sicp-eceval-syntax.scm") ;section 4.1.2 syntax procedures
|
||||||
(load "misc/sicp-leval.scm") ; for lazy evaluation in eceval
|
(load "misc/sicp-leval.scm") ; for lazy evaluation in eceval
|
||||||
|
|
||||||
|
|||||||
23
util.scm
23
util.scm
@@ -129,4 +129,27 @@
|
|||||||
|
|
||||||
(define integers (cons-stream 1 (add-streams ones integers)))
|
(define integers (cons-stream 1 (add-streams ones integers)))
|
||||||
|
|
||||||
|
(define (compile-to-file code target linkage file-name)
|
||||||
|
(set! label-counter 0)
|
||||||
|
(define (write-list-to-port xs port)
|
||||||
|
(if (null? xs)
|
||||||
|
'()
|
||||||
|
(begin
|
||||||
|
(display (car xs) port)
|
||||||
|
(display "\n" port)
|
||||||
|
(write-list-to-port (cdr xs) port))))
|
||||||
|
(if #f ; #t means write to file; #f means don't write to file
|
||||||
|
(let* ((compile-result (compile code target linkage))
|
||||||
|
(assembly-insts (statements compile-result))
|
||||||
|
(port (open-output-file file-name)))
|
||||||
|
(write-list-to-port assembly-insts port)
|
||||||
|
(display "[")
|
||||||
|
(display file-name)
|
||||||
|
(display "]\n")
|
||||||
|
(close-output-port port))
|
||||||
|
(begin
|
||||||
|
(display "[")
|
||||||
|
(display file-name)
|
||||||
|
(display "]\n"))))
|
||||||
|
|
||||||
'util-loaded
|
'util-loaded
|
||||||
|
|||||||
Reference in New Issue
Block a user