[commit: base] master: Implement "TypeLevelReasoning" proposal at wiki:TypeLevelReasoning (365b9d8)
Richard Eisenberg
eir at cis.upenn.edu
Thu Jul 25 12:32:46 CEST 2013
Re-jig done and committed.
On 2013-07-25 04:06, Simon Peyton-Jones wrote:
> Hs-boot files tend to get in the way of optimisation. Moreover,
> sometimes they are truly necessary, and if there are un-necessary ones
> that can greatly complicate adding necessary ones. There are already
> LOTS of data types declared as instances of Typeable at the place that
> Typeable class is defined; no harm in one more.
>
> So I'd really prefer the re-jig if that's ok
>
> Simon
>
> | -----Original Message-----
> | From: Richard Eisenberg [mailto:eir at cis.upenn.edu]
> | Sent: 24 July 2013 22:37
> | To: Simon Peyton-Jones
> | Cc: ghc-devs at haskell.org
> | Subject: Re: [commit: base] master: Implement "TypeLevelReasoning"
> proposal
> | at wiki:TypeLevelReasoning (365b9d8)
> |
> | 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-bounces at haskell.org] On
> Behalf Of
> | > | Richard Eisenberg
> | > | Sent: 24 July 2013 12:41
> | > | To: ghc-commits at 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 <eir at 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-commits at haskell.org
> | > | http://www.haskell.org/mailman/listinfo/ghc-commits
> | >
> | >
> | >
> |
More information about the ghc-devs
mailing list