diff options
author | bnewbold <bnewbold@eta.mit.edu> | 2009-02-24 19:53:41 -0500 |
---|---|---|
committer | bnewbold <bnewbold@eta.mit.edu> | 2009-02-24 19:53:41 -0500 |
commit | db950ffbdf0cc267e3254255e5d3daefd06392fa (patch) | |
tree | f598dc9443c923ba81b1d66b4b498b18625619ab /ps03_evalapply/repl.scm | |
parent | 3743c40e8c99d59abd95481848cb9e773a0c1ce4 (diff) | |
download | 6.945-db950ffbdf0cc267e3254255e5d3daefd06392fa.tar.gz 6.945-db950ffbdf0cc267e3254255e5d3daefd06392fa.zip |
problem set 3 files
Diffstat (limited to 'ps03_evalapply/repl.scm')
-rw-r--r-- | ps03_evalapply/repl.scm | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/ps03_evalapply/repl.scm b/ps03_evalapply/repl.scm new file mode 100644 index 0000000..94a0500 --- /dev/null +++ b/ps03_evalapply/repl.scm @@ -0,0 +1,48 @@ +(declare (usual-integrations write write-line pp eval)) + +(define write + (make-generic-operator 1 + (access write user-initial-environment))) + +(define write-line + (make-generic-operator 1 + (access write-line user-initial-environment))) + +(define pp + (make-generic-operator 1 + (access pp user-initial-environment))) + +(define (procedure-printable-representation procedure) + `(compound-procedure + ,(procedure-parameters procedure) + ,(procedure-body procedure) + <procedure-environment>)) + +(defhandler write + (compose write procedure-printable-representation) + compound-procedure?) + +(defhandler write-line + (compose write-line procedure-printable-representation) + compound-procedure?) + +(defhandler pp + (compose pp procedure-printable-representation) + compound-procedure?) + + + (define (read) (prompt-for-command-expression "eval> ")) + +(define the-global-environment) + +(define (init) + (set! the-global-environment + (extend-environment '() '() the-empty-environment)) + (repl)) + +(define (repl) + (let ((input (read))) + (write-line (eval input the-global-environment)) + (repl))) + +(define go repl) |