diff options
author | Andy Wingo <wingo@pobox.com> | 2008-09-25 16:16:35 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2008-09-25 16:16:35 +0200 |
commit | 7c455996e8a88f8d7480b63e5a9c4553da7a629e (patch) | |
tree | 8e4617875482677aaec9b14dea138bd0566b4a40 /libguile/eval.c | |
parent | 8ab3c80f8bbc1e606b6c18aac7de514cd088091d (diff) | |
download | guile-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.c | 18 |
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) |