summaryrefslogtreecommitdiff
path: root/libguile/memoize.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2014-12-06 19:43:24 +0100
committerAndy Wingo <wingo@pobox.com>2014-12-06 19:43:24 +0100
commit99fb07e19bf47b929fbd7e4574f96ea0bff4e641 (patch)
tree7fd89cc614e28d25913cf89b34eae7996317d2c4 /libguile/memoize.c
parentcfdc8416a2540e43504a021d4f7c44c7d21a668d (diff)
downloadguile-99fb07e19bf47b929fbd7e4574f96ea0bff4e641.tar.gz
Add capture-env to evaluator
* libguile/eval.c (eval): * libguile/memoize.c (memoized_tags, unmemoize): * libguile/memoize.h (SCM_M_CAPTURE_ENV): * module/ice-9/eval.scm (primitive-eval): Add capture-env memoized expression type.
Diffstat (limited to 'libguile/memoize.c')
-rw-r--r--libguile/memoize.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/libguile/memoize.c b/libguile/memoize.c
index 9651cadc6..3923ee334 100644
--- a/libguile/memoize.c
+++ b/libguile/memoize.c
@@ -165,6 +165,7 @@ static const char *const memoized_tags[] =
"seq",
"if",
"lambda",
+ "capture-env",
"let",
"quote",
"define",
@@ -625,6 +626,10 @@ unmemoize (const SCM expr)
tail));
}
}
+ case SCM_M_CAPTURE_ENV:
+ return scm_list_3 (scm_from_latin1_symbol ("capture-env"),
+ CAR (args),
+ unmemoize (CDR (args)));
case SCM_M_LET:
return scm_list_3 (scm_sym_let,
unmemoize_bindings (CAR (args)),