45 lines
966 B
C
45 lines
966 B
C
/*
|
|
Extension that declares a module.
|
|
The extension is equivalent to Scheme source of them form:
|
|
(module idmodule mzscheme
|
|
(define (identity x) x)
|
|
(provide identity))
|
|
*/
|
|
|
|
#include "escheme.h"
|
|
|
|
static Scheme_Object *id(int argc, Scheme_Object **argv)
|
|
{
|
|
return argv[0];
|
|
}
|
|
|
|
Scheme_Object *scheme_reload(Scheme_Env *env)
|
|
{
|
|
Scheme_Env *menv;
|
|
Scheme_Object *proc;
|
|
|
|
menv = scheme_primitive_module(scheme_intern_symbol("idmodule"),
|
|
env);
|
|
|
|
proc = scheme_make_prim_w_arity(id, "identity", 1, 1);
|
|
|
|
/* All added names are automatically exported by the module: */
|
|
scheme_add_global("identity", proc, menv);
|
|
|
|
scheme_finish_primitive_module(menv);
|
|
|
|
return scheme_void;
|
|
}
|
|
|
|
Scheme_Object *scheme_initialize(Scheme_Env *env)
|
|
{
|
|
/* First load is same as every load: */
|
|
return scheme_reload(env);
|
|
}
|
|
|
|
Scheme_Object *scheme_module_name()
|
|
{
|
|
/* This extension defines a module named `idmodule': */
|
|
return scheme_intern_symbol("idmodule");
|
|
}
|