[gambit-list] environment
Mikael
mikael.trash at gmail.com
Fri Mar 11 13:53:25 EST 2011
2011/3/11 spir <denis.spir at gmail.com>
> Hello,
>
> Is an environment implemented as plain Scheme data?
> If yes, is the current
> environment (I mean the set of currently "lookup-able" symbols) accessible?
>
Yes.
> Hope I'm clear (don't know yet Scheme's proper vocabulary yet). I'm
> thinking at
> something along the lines of:
> (getSymbolValue env 'a)
> beeing equivalent, for a symbol 'a, to:
> (eval 'a)
>
Gambit has only one environment. It has several namespaces though. The REPL
default namespace has the name "~".
Implement this as:
(define (getSymbolValue sy) (eval (string->symbol (string-append "~#"
(symbol->string sy))))
> and
> (defSymbol env 'a 1)
> equivalent to:
> (define a 1)
>
Someone knows this one better than me.
Maybe experiment with (define (defSymbol sy value) (eval `(define
,(string->symbol (string-append "~#" (symbol->string sy)) ,value)))) but no
idea.
Since it's lisp generally you'd spell out the above rather as
get-symbol-value and def-symbol! .
Aside pure reflexivity, this would allow some nice tricks, like unpaking an
> associative table into the current env:
> (unpack (parseRecord line))
> where parseRecord returns eg a (name phone email) table, would def symbols
> under those names in env.
>
Generally you want to avoid using the global namespace as much as you ever
can. You want to use it only as a trampoline for the real work you do. One
of the few things you really need to keep there are [library/module]
procedures etc. that you intend to reuse over and over.
Mikael
Denis
> --
> _________________
> vita es estrany
> spir.wikidot.com
>
> _______________________________________________
> Gambit-list mailing list
> Gambit-list at iro.umontreal.ca
> https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20110311/3308238d/attachment.htm>
More information about the Gambit-list
mailing list