All files that start with sicp- are official SICP code
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
(load "util.scm")
|
||||
(load "misc/ch5-compiler.scm")
|
||||
(load "misc/sicp-compiler.scm")
|
||||
|
||||
(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")
|
||||
|
||||
(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
|
||||
; into files.
|
||||
|
||||
@@ -446,6 +423,3 @@ ev-appl-did-operator-no-restore
|
||||
|
||||
(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
|
||||
|
||||
;;**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
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
;;;;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-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 (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
|
||||
|
||||
Reference in New Issue
Block a user