summaryrefslogtreecommitdiffstats
path: root/ps03_evalapply/kons.scm
diff options
context:
space:
mode:
authorbnewbold <bnewbold@eta.mit.edu>2009-02-24 19:53:41 -0500
committerbnewbold <bnewbold@eta.mit.edu>2009-02-24 19:53:41 -0500
commitdb950ffbdf0cc267e3254255e5d3daefd06392fa (patch)
treef598dc9443c923ba81b1d66b4b498b18625619ab /ps03_evalapply/kons.scm
parent3743c40e8c99d59abd95481848cb9e773a0c1ce4 (diff)
download6.945-db950ffbdf0cc267e3254255e5d3daefd06392fa.tar.gz
6.945-db950ffbdf0cc267e3254255e5d3daefd06392fa.zip
problem set 3 files
Diffstat (limited to 'ps03_evalapply/kons.scm')
-rw-r--r--ps03_evalapply/kons.scm12
1 files changed, 12 insertions, 0 deletions
diff --git a/ps03_evalapply/kons.scm b/ps03_evalapply/kons.scm
new file mode 100644
index 0000000..4fc7b73
--- /dev/null
+++ b/ps03_evalapply/kons.scm
@@ -0,0 +1,12 @@
+;;; A valuable special form -- the nonstrict version of CONS:
+
+(define (kons? exp)
+ (and (pair? exp)
+ (eq? (car exp) 'kons)))
+
+(defhandler eval
+ (lambda (expression environment)
+ (cons (delay-memo (cadr expression) environment)
+ (delay-memo (caddr expression) environment)))
+ kons?)
+