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

Modules vs. dynamic binding



    Date: Mon, 11 Dec 89 12:34:47 -0800
    From: Andy Freeman <andy@neon.stanford.edu>

    Scott said that dynamics were often used to pass arguments indirectly;
    the simple case is that A calls B and B calls C, but A wants to
    provide input to C that it doesn't want to pass through B.  I agree.

    Scott's proposed solution was for A to construct (using the module
    facility), a custom version of C that has the arguments that A wants
    to provide and have B call that procedure.  The problem with that
    is telling B which C to call.

    If A and A' construct their own versions (using the module system) of
    C, then they have to tell B to call the right one.  One way is for
    them to pass it.  This "works", but misses the point and is awkward
    for more complex examples.  The alternative is for them to redefine
    C's (global to B) definition.  Maintaining that redefinition
    correctly, when B is not defined within A, requires simulating
    dynamics....

I think you're still missing the point, Andy.  The possibility you
overlook is that A can have one instance of B which calls C, and A' can
have another instance, B', which calls C'.  Or, as you point out, B can
accept an instance of C as an argument.  My claim is that these two
choices are all one needs to elegantly structure any program.

-- Scott