[racket] CoreMIDI bindings

From: Evan Hanson (vnhnsn at gmail.com)
Date: Wed Jul 21 16:43:11 EDT 2010

Makes sense. That's nice flexibility for module users.

Out of curiosity, how dynamic are module names? Can they be
manipulated? Say you had two modules that each provide a function
"connect". You would load them as mod1:connect and mod2:connect using
prefix-in -- how might one design a form that would associate a call
to connect inside a passed expression to a given module?

(define (within-module module-name fun)
  (module-associate module-name fun) ... )

(within-module mod1:
  (lambda (...)
    (connect arg arg arg) ... )) ; --> equates to (mod1:connect ...)

This is miles from how it would work, I'm sure, but is it possible?

Evan

On Wed, Jul 21, 2010 at 2:45 PM, Todd O'Bryan <toddobryan at gmail.com> wrote:
>> On Jul 21, 2010, at 2:51 PM, Evan Hanson wrote:
>>
>> Also, is this the kind of thing that should be namespaced? In
>> contrast to other languages where namespacing is used heavily
>> (sometimes even to a fault), it seems that many scheme libraries
>> are quite flat. Is this simply left up to the user to manage, or does
>> the module system take care of this, or is there something else
>> I'm missing altogether? Forgive the naïveté if this should be clear to
>
> One way that name collisions get avoided is the
>
> (require (prefix-in pre: "imported-module.rkt"))
>
> form. Every name in the module is prefixed with pre: when you use it
> in your module, so if you have any name collisions or want to remind
> yourself where something came from, you just give the module an
> appropriate prefix when you import it in.
>
> Todd
>


Posted on the users mailing list.