
Is there any reason I can't put in a diff request to replace the derived Show instance for SrcSpan with a handcrafted one that does not exhausively list the constructors, making it more readable? Alan

On 10/06/2014 01:59 PM, Alan & Kim Zimmerman wrote:
Is there any reason I can't put in a diff request to replace the derived Show instance for SrcSpan with a handcrafted one that does not exhausively list the constructors, making it more readable?
Alan
Why? If you're looking for pretty output then you should be changing Outputable. -- Mateusz K.

Aside: I really miss derived Show instances in GHC. The Outputable class is
only really useful if you already know how things work. If you e.g. want to
see the AST used to represent some piece of Haskell code, in all its glory,
the Outputable instances aren't useful because they elide too much
information.
On Mon, Oct 6, 2014 at 3:11 PM, Mateusz Kowalczyk
On 10/06/2014 01:59 PM, Alan & Kim Zimmerman wrote:
Is there any reason I can't put in a diff request to replace the derived Show instance for SrcSpan with a handcrafted one that does not exhausively list the constructors, making it more readable?
Alan
Why? If you're looking for pretty output then you should be changing Outputable.
-- Mateusz K. _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs

True, but if you are using GHC generated stuff via the GHC API you
sometimes do not want to have to implement Outputable for all your app
types, when you can auto derive Show which mostly does what you need.
On Mon, Oct 6, 2014 at 3:11 PM, Mateusz Kowalczyk
On 10/06/2014 01:59 PM, Alan & Kim Zimmerman wrote:
Is there any reason I can't put in a diff request to replace the derived Show instance for SrcSpan with a handcrafted one that does not exhausively list the constructors, making it more readable?
Alan
Why? If you're looking for pretty output then you should be changing Outputable.
-- Mateusz K. _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs

The way I read Alan's earlier mail is precisely that; auto-generated Show does what he wants (show the entire AST), whereas Outputable hides too much information. I very much understand his frustration with having to manually figure out what constructors and datatypes go where in a compiled program. Alan's point was the *absence* of auto derived Show instances and, in the case of SrcSpan, too much verbosity (rather than wanting stuff to be incomplete).
Allowing some bespoke stuff to reduce the noise of something like record field names for SrcSpan makes even more sense in this context. Similarly, this is why Alan & I want everything to have Data instances, so you can (amongst many other nice things) selectively print parts of the AST.
Ph.
________________________________
From: Alan & Kim Zimmerman
Is there any reason I can't put in a diff request to replace the derived Show instance for SrcSpan with a handcrafted one that does not exhausively list the constructors, making it more readable?
Alan
Why? If you're looking for pretty output then you should be changing Outputable. -- Mateusz K. _______________________________________________ ghc-devs mailing list ghc-devs@haskell.orgmailto:ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs

On Mon, Oct 06, 2014 at 02:59:03PM +0200, Alan & Kim Zimmerman wrote:
Date: Mon, 6 Oct 2014 14:59:03 +0200 From: Alan & Kim Zimmerman
To: "ghc-devs@haskell.org" Subject: Show instance for SrcSpan Is there any reason I can't put in a diff request to replace the derived Show instance for SrcSpan with a handcrafted one that does not exhausively list the constructors, making it more readable?
Alan
I like the notion that `Read . Show` should always work. Dropping parts of a datatype would break that rule. matthias

Not at all, just show as e.g.
SrcSpan (RealSrcSpan (SrcSpanOneLine "./foo.hs" 4 1 6))
We just avoid showing the srcSpanFile / srcSpanLine / srcSpanSCol /
srcSpanECol noise
On Mon, Oct 6, 2014 at 3:16 PM, Matthias Fischmann
On Mon, Oct 06, 2014 at 02:59:03PM +0200, Alan & Kim Zimmerman wrote:
Date: Mon, 6 Oct 2014 14:59:03 +0200 From: Alan & Kim Zimmerman
To: "ghc-devs@haskell.org" Subject: Show instance for SrcSpan Is there any reason I can't put in a diff request to replace the derived Show instance for SrcSpan with a handcrafted one that does not exhausively list the constructors, making it more readable?
Alan
I like the notion that `Read . Show` should always work. Dropping parts of a datatype would break that rule.
matthias _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs

Ah, you want to drop constructor field names. Then I withdraw my reservations. thanks for the clarification, m. On Mon, Oct 06, 2014 at 03:27:49PM +0200, Alan & Kim Zimmerman wrote:
Date: Mon, 6 Oct 2014 15:27:49 +0200 From: Alan & Kim Zimmerman
To: Matthias Fischmann Cc: "ghc-devs@haskell.org" Subject: Re: Show instance for SrcSpan Not at all, just show as e.g.
SrcSpan (RealSrcSpan (SrcSpanOneLine "./foo.hs" 4 1 6))
We just avoid showing the srcSpanFile / srcSpanLine / srcSpanSCol / srcSpanECol noise
On Mon, Oct 6, 2014 at 3:16 PM, Matthias Fischmann
wrote: On Mon, Oct 06, 2014 at 02:59:03PM +0200, Alan & Kim Zimmerman wrote:
Date: Mon, 6 Oct 2014 14:59:03 +0200 From: Alan & Kim Zimmerman
To: "ghc-devs@haskell.org" Subject: Show instance for SrcSpan Is there any reason I can't put in a diff request to replace the derived Show instance for SrcSpan with a handcrafted one that does not exhausively list the constructors, making it more readable?
Alan
I like the notion that `Read . Show` should always work. Dropping parts of a datatype would break that rule.
matthias _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs

To get even more heretical, a quick grep of the compiler source tree does
not show
SrcSpanOneLine / SrcSpanMultiLine / SrcSpanPoint
being used anywhere but in SrcLoc.lhs.
The use in SrcLoc is in the original constructor, the deconstructors
pulling out lines and columns, and combineSrcSpans.
Perhaprs our SrcSpan is more complicated than it needs to be?
On Mon, Oct 6, 2014 at 3:37 PM, Matthias Fischmann
Ah, you want to drop constructor field names. Then I withdraw my reservations.
thanks for the clarification, m.
On Mon, Oct 06, 2014 at 03:27:49PM +0200, Alan & Kim Zimmerman wrote:
Date: Mon, 6 Oct 2014 15:27:49 +0200 From: Alan & Kim Zimmerman
To: Matthias Fischmann Cc: "ghc-devs@haskell.org" Subject: Re: Show instance for SrcSpan Not at all, just show as e.g.
SrcSpan (RealSrcSpan (SrcSpanOneLine "./foo.hs" 4 1 6))
We just avoid showing the srcSpanFile / srcSpanLine / srcSpanSCol / srcSpanECol noise
On Mon, Oct 6, 2014 at 3:16 PM, Matthias Fischmann
wrote: On Mon, Oct 06, 2014 at 02:59:03PM +0200, Alan & Kim Zimmerman wrote:
Date: Mon, 6 Oct 2014 14:59:03 +0200 From: Alan & Kim Zimmerman
To: "ghc-devs@haskell.org" Subject: Show instance for SrcSpan Is there any reason I can't put in a diff request to replace the derived Show instance for SrcSpan with a handcrafted one that does not exhausively list the constructors, making it more readable?
Alan
I like the notion that `Read . Show` should always work. Dropping parts of a datatype would break that rule.
matthias _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs

By all means do so S From: ghc-devs [mailto:ghc-devs-bounces@haskell.org] On Behalf Of Alan & Kim Zimmerman Sent: 06 October 2014 13:59 To: ghc-devs@haskell.org Subject: Show instance for SrcSpan Is there any reason I can't put in a diff request to replace the derived Show instance for SrcSpan with a handcrafted one that does not exhausively list the constructors, making it more readable? Alan
participants (6)
-
Alan & Kim Zimmerman
-
Johan Tibell
-
Mateusz Kowalczyk
-
Matthias Fischmann
-
p.k.f.holzenspies@utwente.nl
-
Simon Peyton Jones