I agree that hs-boot files are a little inelegant, but is there a bigger problem with them? I consider instances to be more tied to a datatype definition than the class definition. It may be possible (I think it is) to avoid the Proxy.hs-boot and Equality.hs-boot files if we scatter their instances across the modules. But, then the "definition" of these types would be spread across a large surface area. To me, that makes the types harder to update and perhaps harder to understand (though haddock does a nice job of collecting all the instance declarations together).
So, my thought is that the mechanism of hs-boot files may be a little ugly, but it makes the code (that is, the collection of instances) easier to consider as a whole and easier to update. That tradeoff seems worthwhile. That all said, if you (or others) feel strongly about it, I can rejigger it. Richard On Jul 24, 2013, at 3:14 PM, Simon Peyton-Jones wrote: > Richard I am deeply suspicious of all these hs-boot files. > > Instances should preferably go EITHER with the data type declaration OR with > the class declaration. > > In the case of Proxy, for example, why can't the Typeable instance for Proxy > go in Data.Typeable.Internals? (And perhaps similarly for other instances.) > > Simon > > | -----Original Message----- > | From: ghc-commits [mailto:ghc-commits-boun...@haskell.org] On Behalf Of > | Richard Eisenberg > | Sent: 24 July 2013 12:41 > | To: ghc-comm...@haskell.org > | Subject: [commit: base] master: Implement "TypeLevelReasoning" proposal at > | wiki:TypeLevelReasoning (365b9d8) > | > | Repository : http://darcs.haskell.org/ghc.git/ > | > | On branch : master > | > | http://hackage.haskell.org/trac/ghc/changeset/365b9d86d195dc483610a68836b4 > | 063656602244 > | > | >--------------------------------------------------------------- > | > | commit 365b9d86d195dc483610a68836b4063656602244 > | Author: Richard Eisenberg <e...@cis.upenn.edu> > | Date: Wed Jul 24 12:38:50 2013 +0100 > | > | Implement "TypeLevelReasoning" proposal at wiki:TypeLevelReasoning > | > | This commit includes a propositional equality (:=:) in > Data.Type.Equality, > | a Proxy type in Data.Proxy, and has updates to Typeable. > | > | There is an unfortunate number of hs-boot files necessary, but that > | seems cleaner than moving Typeable instances around willy-nilly. > | > | Data/Data.hs | 2 +- > | Data/Proxy.hs | 129 > | ++++++++++++++++++++++++++++++++++++++++ > | Data/Proxy.hs-boot | 5 ++ > | Data/Type/Equality.hs | 99 > | ++++++++++++++++++++++++++++++ > | Data/Type/Equality.hs-boot | 6 ++ > | Data/Typeable.hs | 42 +++++++------ > | Data/Typeable/Internal.hs | 5 +- > | Data/Typeable/Internal.hs-boot | 3 +- > | base.cabal | 2 + > | 9 files changed, 269 insertions(+), 24 deletions(-) > | > | > | Diff suppressed because of size. To see it, use: > | > | git show 365b9d86d195dc483610a68836b4063656602244 > | > | _______________________________________________ > | ghc-commits mailing list > | ghc-comm...@haskell.org > | http://www.haskell.org/mailman/listinfo/ghc-commits > > > _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs