-/* Environments */
-
-SCM
-scm_top_level_env (SCM thunk)
-{
- if (SCM_IMP (thunk))
- return SCM_EOL;
- else
- return scm_cons (thunk, SCM_EOL);
-}
-
-SCM
-scm_env_top_level (SCM env)
-{
- while (scm_is_pair (env))
- {
- SCM car_env = SCM_CAR (env);
- if (!scm_is_pair (car_env) && scm_is_true (scm_procedure_p (car_env)))
- return car_env;
- env = SCM_CDR (env);
- }
- return SCM_BOOL_F;
-}
-
-SCM_SYMBOL (sym_module, "module");
-
-SCM
-scm_lookup_closure_module (SCM proc)
-{
- if (scm_is_false (proc))
- return the_root_module ();
- else if (SCM_EVAL_CLOSURE_P (proc))
- return SCM_PACK (SCM_SMOB_DATA (proc));
- else
- {
- SCM mod = scm_procedure_property (proc, sym_module);
- if (scm_is_false (mod))
- mod = the_root_module ();
- return mod;
- }
-}
-
-SCM_DEFINE (scm_env_module, "env-module", 1, 0, 0,
- (SCM env),
- "Return the module of @var{ENV}, a lexical environment.")
-#define FUNC_NAME s_scm_env_module
-{
- return scm_lookup_closure_module (scm_env_top_level (env));
-}
-#undef FUNC_NAME
-