diff options
author | Marius Vollmer <mvo@zagadka.de> | 1996-11-27 13:22:58 +0000 |
---|---|---|
committer | Marius Vollmer <mvo@zagadka.de> | 1996-11-27 13:22:58 +0000 |
commit | ee33f8faed5f373d69777e6d35a55a501d2fcdb6 (patch) | |
tree | 02638f8d8f97cbdd7e351c79a09b713d8fcbf771 | |
parent | 935aa279f672224df56f2286dcde52fdf7b00255 (diff) | |
download | guile-ee33f8faed5f373d69777e6d35a55a501d2fcdb6.tar.gz |
* eval.c (scm_definedp): Incompatibly changed to be a builtin
Scheme function, instead of syntax. Single argument is now a
symbol.
-rw-r--r-- | libguile/eval.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/libguile/eval.c b/libguile/eval.c index fe6b96b31..b3549a7bd 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -1664,7 +1664,6 @@ dispatch: RETURN (SCM_UNSPECIFIED); - /* new syntactic forms go here. */ case (127 & SCM_MAKISYM (0)): proc = SCM_CAR (x); @@ -2830,21 +2829,24 @@ scm_macro_eval_x (exp, env) } +SCM_PROC (s_definedp, "defined?", 1, 0, 0, scm_definedp); + SCM -scm_definedp (x, env) - SCM x; - SCM env; +scm_definedp (sym) + SCM sym; { - SCM proc = SCM_CAR (x = SCM_CDR (x)); - if (SCM_ISYMP (proc)) + SCM vcell; + + if (SCM_ISYMP (sym)) return SCM_BOOL_T; - else if(SCM_IMP(proc) || !SCM_SYMBOLP(proc)) - return SCM_BOOL_F; - else - { - SCM vcell = scm_sym2vcell(proc, env_top_level(env), SCM_BOOL_F); - return (vcell == SCM_BOOL_F || SCM_UNBNDP(SCM_CDR(vcell))) ? SCM_BOOL_F : SCM_BOOL_T; - } + + SCM_ASSERT (SCM_NIMP (sym) && SCM_SYMBOLP (sym), sym, SCM_ARG1, s_definedp); + + vcell = scm_sym2vcell(sym, + SCM_CDR (scm_top_level_lookup_thunk_var), + SCM_BOOL_F); + return (vcell == SCM_BOOL_F || SCM_UNBNDP(SCM_CDR(vcell))) ? + SCM_BOOL_F : SCM_BOOL_T; } static scm_smobfuns promsmob = @@ -2923,8 +2925,6 @@ scm_init_eval () scm_i_atcall_cc = scm_make_synt ("@call-with-current-continuation", scm_makmmacro, scm_m_cont); - scm_make_synt ("defined?", scm_makmmacro, scm_definedp); - #ifdef DEBUG_EXTENSIONS scm_i_enter_frame = SCM_CAR (scm_sysintern ("enter-frame", SCM_UNDEFINED)); scm_i_apply_frame = SCM_CAR (scm_sysintern ("apply-frame", SCM_UNDEFINED)); |