[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] Modules and environments

From: Peter Bex
Subject: Re: [Chicken-users] Modules and environments
Date: Sun, 30 Aug 2009 19:48:36 +0200
User-agent: Mutt/

On Sun, Aug 30, 2009 at 10:27:26AM -0700, Kon Lovett wrote:
> The "environments" extension is tolerated but not  
> endorsed. As an example, the "apropos" extension does not use the  
> "environments" extension but instead relies on undocumented calls.

That's a good sign that something's wrong.  If the apropos egg did not
exist and I would have to write it, I'd start by using the environments
egg.  If that doesn't work, I'd consider the environments egg broken.

> I suggest re-opening the debate.

Consider it re-opened ;)

I'm trying to make an URI dispatcher which is based on the new
uri-dispatch egg.  This egg uses the environments egg to obtain
bindings to procedures after checking in a whitelist if the procedure
is allowed to be called.

In order not to pollute the webserver's environment, I put some helper
functions inside a module, which exports only the procedure that is in
the whitelist.

It looks like this:

(module foo

(define helper ...)
(define another-helper ...)
;; much more helpers here

(define (foo-proc . args)
  (helper ...))

(import foo)
(whitelist! 'foo)

This way, I can have several other web pages on which perhaps the same
helper names are used without causing name clashes (which is exactly
what modules were invented for).

"The process of preparing programs for a digital computer
 is especially attractive, not only because it can be economically
 and scientifically rewarding, but also because it can be an aesthetic
 experience much like composing poetry or music."
                                                        -- Donald Knuth

Attachment: pgpazB6TK2zYq.pgp
Description: PGP signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]