This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Change to variable interface request


I would like to have the following primitive added to
variables:

(variable-bind-pair <pair>)  -----> #<variable>

The new variable would directly reference the pair
for use within eval and such.  

e.g. 
> (define x '(x . 3))
> (define xvar (variable-bind-pair (cons 'x 3))
#<variable name: x binding: 3>
> (variable-set! xvar 10)
> x
(x . 10)

I am divorcing the object system from the module system and
implementing directly on the primitives and I find
that I do not really need to store bindings as variables but
I can get away with pairs and create variables only
when needed by eval.  This is to save memory and reduce
the normal access time for objects.


Wade.

---------------------------- diff variable.c variable.c.old
169,181d168
< SCM_PROC(s_variable_bind_pair, "variable-bind-pair", 1, 0, 0, scm_variable_bind_pair);
< 
< SCM
< scm_variable_bind_pair (pair)
<      SCM pair;
< {
<   SCM_ASSERT (SCM_NIMP(pair) && SCM_CONSP(pair), pair, SCM_ARG1, s_variable_bind_pair);
<   
<   if (SCM_CAR(pair) == SCM_UNDEFINED)
<     SCM_SETCAR(pair, anonymous_variable_sym);
< 
<   return make_vcell_variable (pair);
< }

---------------------------- diff variable.h variable.h.old
64d63
< extern SCM scm_variable_bind_pair SCM_P ((SCM pair));