heatsink wrote:
Is there a way, in template haskell, to find out what instance declarations exist? I'm not trying to accomplish anything specific right now, but I can see two potential uses for this. One is to emit compile-time error messages from TH code which would be more informative than the typechecker's output. The other is to produce TH functions that conditionally generate code depending on the instances satisfied by their arguments.
Apologies for becoming off-topic now, I've got nothing against template haskell (TH), on the contrary, it is a great device to increase genericity.
But I want to warn about conditional code, because this may become a nightmare to maintain. I.e. we (at Bremen) have (few) bits in TH that check if we run under windows or unix (but no one knows if the windows part is still working). Furthermore we support a few older (still recent) ghc versions with conditional code (like ghc itself can be bootstrapped with different older version).
Plugging in various libraries using Cabal is a nice feature, but imagine if you would start to program depending on the currently installed packages (and visible instances)! (Fortunately, this would be hard to do currently.)
So (despite cabal and the desire for a minimal kernel) I hope that ghc will continue to supply a large number of more or less "standard" packages or modules that can safely be expected to exist in (almost) every installation. (Therefore I've suggested to keep Data.Set and Data.Map in the base package, but another "standard" package may be fine, too). Otherwise truly application specific 3rd party cabal packages may all come with their own "Prelude extensions" rather than reusing increasingly solidified Haskell basics (that are hopefully not disputed too much by the design of Haskell-Prime).
If you agree with me, great, ignore this posting. Respectfully Christian _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe