On Thursday 04 November 2004 17:20, Ben Rudiak-Gould wrote: > Koen Claessen wrote: > >(1) Whenever a module uses an implicit parameter like that, > >it has to have a name that is different from all implicit > >parameters used by any other (future) module. (Yes, implicit > >paramers cannot be quantified by a module name.) This is > >difficult to ensure. > > This is one of the several ways in which the current implementation of > implicit parameters is broken. Clearly they *should* belong to the > module namespace, and if we modify the implementation so that they do, > the problem you describe here goes away.
I have thought about this and I am not sure that this is possible or even makes sense. Remember that implicit parameters cannot be bound at the top level. They must be 'let' or 'where' bound. Indeed, when using them for a global variabe replacement, we do *not* want them at the top level, because we want to initialize them explicitly: do_stuff_with_x = do use_it ?x -- refers to the x bound in main main = do x <- initialize_x do_stuff_with_x What if do_stuff_with_x is in another module? We could say that x belongs to namespace Main (i.e. the module in which it is bound) do_stuff_with_x = do use_it ?Main.x but then do_stuff_with_x cannot be called from any other module. This is bad. We could also say that x belongs to the namespace where x is used, but this would lead to similar problems, i.e. all usages of an implicit parm would be limited to one and only one module. This is bad too. Ben (the other one) _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell