All files that start with sicp- are official SICP code

This commit is contained in:
2021-04-21 09:12:05 -04:00
parent 016d35bc87
commit 922a47f20e
7 changed files with 43 additions and 29 deletions

View File

@@ -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
View 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")

View File

@@ -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

View File

@@ -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

View File

@@ -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