Multiple environments
Diogo Behrens <[email protected]>
| Newsgroups | gmane.lisp.scheme.chicken |
|---|---|
| Message-ID | <[email protected]> |
Dear mailing list,
I’m looking for an elegant way how to manage multiple environments (global bindings) to build a concurrency simulator. The input of my simulator is the number of actors/coroutines/etc. I would like to have fully separate environments for these coroutines, so they can mutate variables with same name and won’t affect each other. The communication between each actor is not done via shared variables.
Let’s say the coroutines would do something like:
```
(Spawn-coroutine
(Lambda ()
(Do-something)
(Set! X (some-random-thing))
(Yield)
(Do-something-else)
(Print X) ; the random thing of *this* coroutine
(Yield)))
```
(Sorry for the unformatted code, my email client is trying to be clever)
I know I could use variables in the lambda scope, but I would prefer to avoid restricting the actors implementation.
I have a prototype in Racket, where I use make-base-namespace to create namespaces for each actor. I can then call eval with the lambda as first argument and the mutable namespace as second.
Would somebody in the mailing list have a suggestion how to handle this in an elegant way in CHICKEN?
Thank you.
Best,
-Diogo