[PD] Re: [PD-announce] k_guile v0.0.1

Larry Troxler lt at westnet.com
Sat Jan 24 10:31:21 CET 2004


On Thursday 15 January 2004 05:14, Kjetil Svalastog Matheussen wrote:
> On Wed, 14 Jan 2004, Larry Troxler wrote:
> > On Wednesday 14 January 2004 10:22, Kjetil Svalastog Matheussen wrote:
> > > Not exactly, all code is run in the same interpreter. But the (define)
> > > thing is to let each instance run in its own namespace.
> >
> > Is what you refer to as a "namespace", the same as what Common Lisp would
> > refer to as a "closure"? In common lisp, such a function definition would
> > create a "closure", which is I think a persistent "environment", and
> > "environment" being a set of symbol bindings more or less.
>
> I don't know what a closure is actually. But you can think of an
> environment (which defines the nearest namespace) as a stack only
> that it doesn't dissapear unless not referenced to anymore. Its not
> complicated, I just dont know how to explain properly.
>

Ok, understood. When you said "namespace", I started wondering whether scheme 
had a mechanism similar to Common Lisp's "packages".

So, if I understand you correctly, a "namespace" in scheme is a staticly 
scoped environment.


> In the CVS I added (load-if-exists "/etc/k_guile.scm")(load-if-exists
> "$HOME/.k_guile.scm") into global.scm.
>
Finally got it (after waiting the sourceforge lag-time - they really have to 
do something about that if they're serious about keeping projects on their 
site). At the moment I'm not sure if this is working - I'm using (display) in 
my .k_guile.scm to announce itself but I hear nothing, and it should be also 
loading Common Music. Probably I need to go to a Scheme site and learn more 
about Scheme output to the console.

> So if you put something like the following code:
>
> "
> (define common-music-loaded #f)
> (define (load-common-music)
>   (if (not common-music-loaded)
>     (load "path-to-common-music/cm.scm"))
>   (set! common-music-loaded #t))
> "
>
> into /etc/k_guile.scm, you can safely call (load-common-music) in your
> scheme programs used for k_guile.
>

Isn't this called from global.scm, which is run when the library is first 
loaded? Isn't this script called from the "setup" function? (I think this is 
the source of all my confusion - what does PD do about loading libraries that 
define a single extern). If so, why do you need that singleton pattern?

Larry Troxler





More information about the Pd-list mailing list