> Wait... what do you mean "Core cannot generate new names to be exported".
I meant if I add a new name in the Core transformation, that doesn't change the module's export list as seen by everything outside that module. Which makes sense, it just means I have to change my approach. > Maybe you mean that you want your plugin to transform > > module M( f ) where > f = e > into > module M( f_ ) where > f_ = ...f... > f = e > No, I meant that module M(f) where f = e should be come module M (f, f_) where f = readRefOf f_; f_ = makeSomeRef e In other words, the API is only changed in that an additional binding has been exported for each top-level definition to which you can write (only of the correct type) a new definition. This is something that you could do manually, write it by hand, but I want it automatic for any module I load into GHCi! > That seems pretty drastic, because now the programmer's API for the module > has changed. Are you sure you don't want to do this > > module M( f ) wehre > f_ = e > f = ...f_... > > by renaming the existing f with some local name. Sure -- but both need to be exported otherwise you can't update the definition of `f` by writing to `f_`. With both, all other modules (and the module itself) just refer to `f' as they normally would, it's just that `f` gets its definition from some kind of mutable cell. I discussed with Daniel Peebles an approach to this with the new kind polymorphic Typeable landing in GHC 7.8, in which I could safely write functions in and out with Fun from HList: http://code.haskell.org/~aavogt/HList/docs/HList/Data-HList-FakePrelude.html#t:Fun Hypothetically I can use bog standard Typeable deriving for that type, and actually use Data.Dynamic to store all functions, using fromDynamic :: a -> Maybe safe coercion. Don't get me wrong, I don't want the plugin to break any APIs or do anything unsafe (beyond using unsafePerformIO to hold a Map Name Dynamic or so), I just want in-place update of IO-ish actions. I'm compiling GHC from Git at the moment to see if this approach is worthwhile. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe