The specific use case is for dataflow graphs, where you’re evaluating a bunch of small snippets of code that can refer to each other by name.
I’d like to make an environment in which the variables in the same subgraph are exposed as no-argument thunks. For example, let’s say I have one subgraph that contains a = “12” => evaluates to 12 b = “(+ 1 (a))” => evaluates to 13, since the (a) thunk evaluates to 12 and another subgraph which contains x = “1” => evaluates to 1 y = “(* (x) 2)” => evaluates to 2 If I insert the thunks into (scheme-report-environment 5), they leak from one graph to another – and to be fair, the docs to say that assigning into this environment is undefined behavior. However, if I make an empty environment with (null-environment), it doesn’t have useful functions like + and *; looks like (make-module) has the same issue. I'm sure that this is possible in Guile, but I got tired of reading through the source files to hunt down undocumented function that do what I need [1]. -Matt [1] Another recent incident: How do you programmatically list all of the variables in a module? You search the web, find http://www.draketo.de/proj/guile-basics/#sec-3-2, see a a reference to module-map, which doesn’t exist in the documentation, dig it up in the source to see its arguments, etc… On Jun 10, 2016, at 6:11 PM, Basa Centro <basa.cen...@gmail.com> wrote: >> First of all: is the "sandboxing" aspect of these environment important? > > Taylan, > > Thanks, that's exactly what I meant by "motivation" in my first reply. > (There was a recent, 6 months ago or so, thread on sandboxing in > guile-user by the way.) > > Was Matt trying to prevent _access_ (inaccessible vs. read-only vs. > read/write) to data? Or was he trying to prevent only _visibility_ > (e.g. for hygeine)? > > I think we need to know more about "what" and "why" to answer his > question, rather than just "how"--if that makes any sense. Does > Racket [1] even _really_ achieve what he needs to do (_prevent_ access > for example)? We don't even know if we don't understand the > higher-level purpose. > > (Basa) > > [1] Disclaimer: I like Racket too--it is a great project. I just hate > to see someone leave Guile because of a minor technicality.