mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 19:50:24 +02:00
* eval.c (scm_sym_system_module): New symbol.
* eval.c, eval.h (scm_top_level_lookup_closure): New function: Extract the lookup closure from an environment. (scm_system_module_env_p): New function: Return non-#f if MODULE is a system module. * eval.c, procs.c, procs.h, procprop.c: Renamed getter -> procedure throughout.
This commit is contained in:
parent
a726dd9da5
commit
6bcb086819
1 changed files with 33 additions and 9 deletions
|
@ -3370,7 +3370,29 @@ scm_top_level_env (thunk)
|
||||||
if (SCM_IMP (thunk))
|
if (SCM_IMP (thunk))
|
||||||
return SCM_EOL;
|
return SCM_EOL;
|
||||||
else
|
else
|
||||||
return scm_cons(thunk, (SCM)SCM_EOL);
|
return scm_cons (thunk, SCM_EOL);
|
||||||
|
}
|
||||||
|
|
||||||
|
SCM
|
||||||
|
scm_top_level_lookup_closure (SCM env)
|
||||||
|
{
|
||||||
|
if (SCM_IMP (env))
|
||||||
|
return SCM_BOOL_F;
|
||||||
|
else
|
||||||
|
return SCM_CAR (scm_last_pair (env));
|
||||||
|
}
|
||||||
|
|
||||||
|
SCM_SYMBOL (scm_sym_system_module, "system-module");
|
||||||
|
|
||||||
|
SCM
|
||||||
|
scm_system_module_env_p (SCM env)
|
||||||
|
{
|
||||||
|
SCM proc = scm_top_level_lookup_closure (env);
|
||||||
|
return ((SCM_NFALSEP (proc)
|
||||||
|
&& SCM_NFALSEP (scm_procedure_property (proc,
|
||||||
|
scm_sym_system_module)))
|
||||||
|
? SCM_BOOL_T
|
||||||
|
: SCM_BOOL_F);
|
||||||
}
|
}
|
||||||
|
|
||||||
SCM_PROC(s_eval2, "eval2", 2, 0, 0, scm_eval2);
|
SCM_PROC(s_eval2, "eval2", 2, 0, 0, scm_eval2);
|
||||||
|
@ -3389,8 +3411,10 @@ SCM
|
||||||
scm_eval (obj)
|
scm_eval (obj)
|
||||||
SCM obj;
|
SCM obj;
|
||||||
{
|
{
|
||||||
return
|
return scm_eval_3 (obj,
|
||||||
scm_eval_3(obj, 1, scm_top_level_env(SCM_CDR(scm_top_level_lookup_closure_var)));
|
1,
|
||||||
|
scm_top_level_env
|
||||||
|
(SCM_CDR (scm_top_level_lookup_closure_var)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* SCM_PROC(s_eval_x, "eval!", 1, 0, 0, scm_eval_x); */
|
/* SCM_PROC(s_eval_x, "eval!", 1, 0, 0, scm_eval_x); */
|
||||||
|
@ -3399,10 +3423,10 @@ SCM
|
||||||
scm_eval_x (obj)
|
scm_eval_x (obj)
|
||||||
SCM obj;
|
SCM obj;
|
||||||
{
|
{
|
||||||
return
|
return scm_eval_3 (obj,
|
||||||
scm_eval_3(obj,
|
|
||||||
0,
|
0,
|
||||||
scm_top_level_env (SCM_CDR (scm_top_level_lookup_closure_var)));
|
scm_top_level_env
|
||||||
|
(SCM_CDR (scm_top_level_lookup_closure_var)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static const scm_smobfuns promsmob = {scm_markcdr, scm_free0, prinprom};
|
static const scm_smobfuns promsmob = {scm_markcdr, scm_free0, prinprom};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue