summaryrefslogtreecommitdiff
path: root/libguile/eval.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2008-09-25 16:16:35 +0200
committerAndy Wingo <wingo@pobox.com>2008-09-25 16:16:35 +0200
commit7c455996e8a88f8d7480b63e5a9c4553da7a629e (patch)
tree8e4617875482677aaec9b14dea138bd0566b4a40 /libguile/eval.c
parent8ab3c80f8bbc1e606b6c18aac7de514cd088091d (diff)
downloadguile-7c455996e8a88f8d7480b63e5a9c4553da7a629e.tar.gz
export `make-promise' to scheme
* libguile/eval.h: * libguile/eval.c (scm_make_promise): Rename from `scm_makprom', and export as the scheme procedure, `make-promise'. * libguile/eval.i.c (CEVAL): s/makprom/make_promise/.
Diffstat (limited to 'libguile/eval.c')
-rw-r--r--libguile/eval.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/libguile/eval.c b/libguile/eval.c
index 4defade1f..d4b6aece2 100644
--- a/libguile/eval.c
+++ b/libguile/eval.c
@@ -3662,13 +3662,23 @@ scm_closure (SCM code, SCM env)
scm_t_bits scm_tc16_promise;
-SCM
-scm_makprom (SCM code)
-{
+SCM_DEFINE (scm_make_promise, "make-promise", 1, 0, 0,
+ (SCM thunk),
+ "Create a new promise object.\n\n"
+ "@code{make-promise} is a procedural form of @code{delay}.\n"
+ "These two expressions are equivalent:\n"
+ "@lisp\n"
+ "(delay @var{exp})\n"
+ "(make-promise (lambda () @var{exp}))\n"
+ "@end lisp\n")
+#define FUNC_NAME s_scm_make_promise
+{
+ SCM_VALIDATE_THUNK (1, thunk);
SCM_RETURN_NEWSMOB2 (scm_tc16_promise,
- SCM_UNPACK (code),
+ SCM_UNPACK (thunk),
scm_make_recursive_mutex ());
}
+#undef FUNC_NAME
static SCM
promise_mark (SCM promise)