Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend ---+ Reporter: bos | Owner: igloo Type: feature request | Status: closed Priority: normal| Milestone: 7.4.1 Component: libraries/base|Version: 7.3 Resolution: fixed | Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Difficulty: Unknown Testcase:| Blockedby: Blocking:|Related: ---+ Changes (by igloo): * status: new = closed * resolution: = fixed * milestone: Not GHC = 7.4.1 Comment: This was done in f4b71242b05285a5b901123ad463f3aa74a472c7. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:44 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend ---+ Reporter: bos | Owner: Type: feature request | Status: patch Priority: normal| Milestone: Not GHC Component: libraries/base|Version: 7.3 Resolution:| Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Difficulty: Unknown Testcase:| Blockedby: Blocking:|Related: ---+ Comment(by igloo): This turned out to have some bad interactions with `` in the pretty package; see this thread: http://www.haskell.org/pipermail/libraries/2011-November/017066.html -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:34 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend ---+ Reporter: bos | Owner: Type: feature request | Status: closed Priority: normal| Milestone: Not GHC Component: libraries/base|Version: 7.3 Resolution: fixed | Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Difficulty: Unknown Testcase:| Blockedby: Blocking:|Related: ---+ Changes (by tibbe): * status: patch = closed * resolution: = fixed Comment: Fixed in ghc-7.4 branch. ghc: {{{ commit 7dfa17d4ed8fa7604cb681e375133db4773b8910 Author: Johan Tibell johan.tib...@gmail.com Date: Wed Jan 4 09:59:22 2012 -0800 Be explicit about what we import from Data.Monoid compiler/ghci/RtClosureInspect.hs |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) }}} base: {{{ commit 556d174a555b993176e6766017b984e7a096a327 Author: Johan Tibell johan.tib...@gmail.com Date: Tue Aug 16 11:40:34 2011 +0200 Add as an alias for mappend Data/Monoid.hs |8 1 files changed, 8 insertions(+), 0 deletions(-) }}} pretty: {{{ commit f615a6aeb4abcdbfbfab67b0a82cef9a9a65ec49 Author: Johan Tibell johan.tib...@gmail.com Date: Wed Jan 4 10:06:50 2012 -0800 Add note explaining why we use a different Text/PrettyPrint/HughesPJ.hs |4 1 files changed, 4 insertions(+), 0 deletions(-) }}} We will have to separately sort out the pretty package needs to change if it wants to use the `Data.Monoid.()` operator. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:35 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend ---+ Reporter: bos | Owner: Type: feature request | Status: new Priority: normal| Milestone: Not GHC Component: libraries/base|Version: 7.3 Resolution:| Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Difficulty: Unknown Testcase:| Blockedby: Blocking:|Related: ---+ Changes (by igloo): * status: closed = new * resolution: fixed = -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:36 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend ---+ Reporter: bos | Owner: igloo Type: feature request | Status: new Priority: normal| Milestone: Not GHC Component: libraries/base|Version: 7.3 Resolution:| Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Difficulty: Unknown Testcase:| Blockedby: Blocking:|Related: ---+ Changes (by igloo): * owner: = igloo Comment: Not in HEAD -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:37 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend ---+ Reporter: bos | Owner: igloo Type: feature request | Status: new Priority: normal| Milestone: Not GHC Component: libraries/base|Version: 7.3 Resolution:| Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Difficulty: Unknown Testcase:| Blockedby: Blocking:|Related: ---+ Comment(by igloo): If it won't generalise `Text.Pretty.`, then I wonder why we don't name it `++` instead (and remove the current `++` definition). I guess the main argument against doing so would be error messages for beginners, but perhaps better error messages and/or helium are the answer to that. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:38 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend ---+ Reporter: bos | Owner: igloo Type: feature request | Status: new Priority: normal| Milestone: Not GHC Component: libraries/base|Version: 7.3 Resolution:| Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Difficulty: Unknown Testcase:| Blockedby: Blocking:|Related: ---+ Comment(by tibbe): It does generalize `Text.Pretty.`, but the interaction between `` and `+` in pretty is iffy with regards to fixity and associativity (and was that way before this addition, this simply brought it to light) and needs to be resolved. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:39 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend ---+ Reporter: bos | Owner: igloo Type: feature request | Status: new Priority: normal| Milestone: Not GHC Component: libraries/base|Version: 7.3 Resolution:| Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Difficulty: Unknown Testcase:| Blockedby: Blocking:|Related: ---+ Comment(by igloo): Oh, I missed this comment in your previous message: We will have to separately sort out the pretty package needs to change if it wants to use the `Data.Monoid.()` operator. Surely having a single GHC release in which `Data.Monoid` and `Text.PrettyPrint` have conflicting definitions of `` is the worst case? Anyone importing both will need to change their code to disambiguate in order to work around a transient problem. Why not just make both changes at once, with GHC 7.6.1? This could be done in the HEAD now, and should be released well under a year after 7.4.1. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:40 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend ---+ Reporter: bos | Owner: igloo Type: feature request | Status: new Priority: normal| Milestone: Not GHC Component: libraries/base|Version: 7.3 Resolution:| Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Difficulty: Unknown Testcase:| Blockedby: Blocking:|Related: ---+ Comment(by bos): Replying to [comment:40 igloo]: Why not just make both changes at once, with GHC 7.6.1? This could be done in the HEAD now, and should be released well under a year after 7.4.1. The proposal is already over 3 years old, and has been stalled by immense amounts of bikeshedding. It would be ludicrous to delay it by another year just to sort out the incompatibility between the two modules, when Text.PrettyPrint is not at all widely used and the fix in any location that is actually subject to the problem takes less than a minute. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:41 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend ---+ Reporter: bos | Owner: igloo Type: feature request | Status: new Priority: normal| Milestone: Not GHC Component: libraries/base|Version: 7.3 Resolution:| Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Difficulty: Unknown Testcase:| Blockedby: Blocking:|Related: ---+ Comment(by YitzGale): There is widespread support for this. I think it should be implemented immediately. (Even though I myself voted against it, because in my bikeshed `` is exported from `Data.Semigroup` and not from `Data.Monoid`.) `Text.PrettyPrint` is a far lower priority. After this much delay, we should implement the change even if it ultimately reduces the quality of the solution we provide for `Text.PrettyPrint`. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:42 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend ---+ Reporter: bos | Owner: igloo Type: feature request | Status: new Priority: normal| Milestone: Not GHC Component: libraries/base|Version: 7.3 Resolution:| Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Difficulty: Unknown Testcase:| Blockedby: Blocking:|Related: ---+ Comment(by JulesBean): Go ahead. Text.Pretty is not particularly widely used and users of Text.Pretty will not find this hard to resolve in their own code should they choose to do so. As a historical note: Replying to [comment:38 igloo]: If it won't generalise `Text.Pretty.`, then I wonder why we don't name it `++` instead (and remove the current `++` definition). `` was chosen because of the match to `Data.Sequence.` not `Text.Pretty.` according to my scanning of the bug / email thread / my memory (on a recommendation from Ross Patterson). -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:43 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend --+- Reporter: bos | Owner: Type: feature request | Status: patch Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 7.3 Resolution: | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown | --+- Changes (by duncan): * version: 7.2.1 = 7.3 Comment: I think we're ok as per the new library process: * We have had the discussion on the libraires list (the discussion took place before the new libs process was in place, but what happened does follow what the new library process calls for). * We've created a ticket on the trac (re-opened this ticket) with the patch and the link to the discussion So now we just need the maintainer to apply it. That's GHC HQ, meaning Simon, Simon or Ian. If you're busy and want to delegate, I'm happy to take the blame myself! :-) We've all been procrastinating on this for years. Can we please get this into base for the 7.4 release please? :-) -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:32 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend --+- Reporter: bos | Owner: Type: feature request | Status: patch Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 7.3 Resolution: | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown | --+- Comment(by duncan): Replying to [comment:28 YitzGale]: This is an old proposal. I was in favor of it back in the day, but now I am opposed, due to the existence of the semigroups package: For the record, I disagree. Having a semigroup class is fine, but as long as it is outside of base then we still need in base otherwise in practice all the other packages are just not going to provide semigroup instances. Later on, if we move semigroup into base, or move monoid out of base into a different core package then that'll all be nice, we can move into semigroup etc. But lets not hold back everything just because it's not perfect. Whatever solution we use to fix Applicative between Functor and Monad, we'll be able to use the same solution to fix Semigroup. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:33 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend --+- Reporter: bos | Owner: Type: feature request | Status: patch Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 7.2.1 Resolution: | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown | --+- Changes (by tibbe): * version: 6.10.3 = 7.2.1 -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:31 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend -+-- Reporter: bos | Owner: Type: proposal| Status: new Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 6.10.3 Resolution: | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown| -+-- Changes (by tibbe): * status: closed = new * resolution: invalid = Comment: As per http://thread.gmane.org/gmane.comp.lang.haskell.libraries/11450 we now have consensus. Please apply the attached patch. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:29 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend --+- Reporter: bos | Owner: Type: feature request | Status: patch Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 6.10.3 Resolution: | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown | --+- Changes (by tibbe): * status: new = patch * type: proposal = feature request -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:30 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend -+-- Reporter: bos | Owner: Type: proposal| Status: closed Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 6.10.3 Resolution: invalid | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown| -+-- Changes (by YitzGale): * cc: gale@… (added) Comment: Since there is already so much discussion about the issue in this ticket, I am adding this comment here: This is an old proposal. I was in favor of it back in the day, but now I am opposed, due to the existence of the semigroups package: http://hackage.haskell.org/package/semigroups This operator is already exported from Data.Semigroup. Library authors who have Monoid instances should also provide Semigroup instances. That makes the `` operator available. Exporting `` from Data.Monoid would break any code that uses the synonymous operator from Data.Semigroup. And anyway, it's incorrect - this is really a semigroup operator, Monoid only adds the identity element. Really Monoid should be a subclass of Semigroup, but that would be difficult to do at this stage. It is similar to the situation with Functor and Monad, unfortunately. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:28 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend -+-- Reporter: bos | Owner: Type: proposal| Status: closed Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 6.10.3 Resolution: invalid | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown| -+-- Changes (by igloo): * status: new = closed * resolution: = invalid Comment: Proposal tickets are no longer needed as part of the library submissions process. Instead, a normal ticket should be created once consensus has been achieved. Please see the [http://www.haskell.org/haskellwiki/Library_submissions process description] for details. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:27 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend -+-- Reporter: bos | Owner: Type: proposal| Status: new Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 6.10.3 Resolution: | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown| -+-- Comment(by jeltsch): Replying to [comment:25 nominolo]: Getting rid of `mappend` would break a ''lot'' of packages, so that will take a while. Of course. But that’s why I think we should start to prepare for {{{mappend}}} removal now. ;-) Also, what should happen to `mconcat`? The naming of `mappend` makes somewhat sense, because `[a]` is the free Monoid, so `mconcat` is just the extension of that naming strategy. Should `mconcat` stay as is, or can anyone think of a better name? I don‘t like the {{{m}}} in {{{mappend}}} and {{{mconcat}}} because it’s not very descriptive. Sometimes it means “monoid” as in {{{mappend}}} and {{{mconcat}}}, and sometimes it means “monad” as in {{{mzero}}}, {{{mplus}}}, and {{{msum}}}. So it might be a good idea to change {{{mconcat}}} to {{{concat}}}, at least in the long run. The current {{{concat}}} is just {{{mconcat}}} of the {{{[a]}}} instance of {{{Monoid}}}, so it could just be removed then. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:26 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend -+-- Reporter: bos | Owner: Type: proposal| Status: new Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 6.10.3 Resolution: | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown| -+-- Comment(by nominolo): Benchmarks checking whether changing associativity of () in `pretty` would lead to performance issues: {{{ import Text.PrettyPrint import Data.List import Criterion.Main f_left :: Int - Doc f_left n = foldl' () empty (map (text . show) [10001..1+n]) f_right :: Int - Doc f_right n = foldr () empty (map (text . show) [10001..1+n]) main = defaultMain $ [ bench left $ nf (length . render . f_left) 1 , bench right$ nf (length . render . f_right) 1 , bench left20k $ nf (length . render . f_left) 2 , bench right20k $ nf (length . render . f_right) 2 , bench left30k $ nf (length . render . f_left) 3 , bench right30k $ nf (length . render . f_right) 3 ] }}} Results (lower numbers are better): {{{ Iterations _10K__20K__30K Left 10.1 (0.5) 24.4 (0.6) 40.0 (1.3) Right 8.9 (0.2) 22.7 (3.1) 31.2 (4.6) Format: runtime (stddev) all in milliseconds }}} So switching to right-associativity may actually increase performance slightly. Scaling doesn't seem to be quite linear, but that could be due to cache effects or suchlike; and it's also outside the scope of this proposal. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:22 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend -+-- Reporter: bos | Owner: Type: proposal| Status: new Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 6.10.3 Resolution: | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown| -+-- Comment(by jeltsch): It was also suggested to make {{{()}}} a method of {{{Monoid}}} and insert the following default definitions: {{{ () = mappend mappend = () }}} Any objections against this? -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:23 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend -+-- Reporter: bos | Owner: Type: proposal| Status: new Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 6.10.3 Resolution: | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown| -+-- Comment(by jeltsch): In the long run, we should probably get rid of {{{mappend}}} altogether. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:24 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend -+-- Reporter: bos | Owner: Type: proposal| Status: new Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 6.10.3 Resolution: | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown| -+-- Comment(by nominolo): Getting rid of `mappend` would break a ''lot'' of packages, so that will take a while. Also, what should happen to `mconcat`? The naming of `mappend` makes somewhat sense, because `[a]` is the free Monoid, so `mconcat` is just the extension of that naming strategy. Should `mconcat` stay as is, or can anyone think of a better name? -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:25 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend -+-- Reporter: bos | Owner: Type: proposal| Status: new Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 6.10.3 Resolution: | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown| -+-- Comment(by nominolo): The discussion for this proposal can be found at: http://thread.gmane.org/gmane.comp.lang.haskell.libraries/11450 We were approaching consensus for the addition of of: {{{ infixr 6 () :: Monoid m = m - m - m () = mappend }}} and a matching change for `(+)` in the `pretty` package. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:21 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend -+-- Reporter: bos | Owner: Type: proposal| Status: new Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 6.10.3 Resolution: | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown| -+-- Changes (by jeltsch): * status: closed = new * resolution: wontfix = Comment: I don’t think that this proposal was abandoned. I suppose that just nobody made the next steps to make the proposed change become reality. Would anyone object if I’d declare “use {{{}}} with fixity {{{infixr 6 }}}” as the consensus and go on with producing a patch for the libraries, etc.? -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:17 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend -+-- Reporter: bos | Owner: Type: proposal| Status: new Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 6.10.3 Resolution: | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown| -+-- Comment(by dons): I thought the use of had been agreed upon. Duncan just gave a talk claiming this would be in the next base library release. +1 for . Let's kill confusing hints of sequences in monoid. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:18 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend -+-- Reporter: bos | Owner: Type: proposal| Status: new Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 6.10.3 Resolution: | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown| -+-- Comment(by tibbe): +1 Having a right associative operator for monoid makes it less error prone to use builder monoid like `Data.Binary.Builder` and `Data.Text.Lazy.Builder` as they should be used in a right associative way. I think what needs to happen is that someone creates a patch and moves the ticket to the please merge stage, assuming that consensus was reached (I didn't check the discussion thread). -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:19 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend -+-- Reporter: bos | Owner: Type: proposal| Status: new Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 6.10.3 Resolution: | Keywords: Testcase: | Blockedby: Difficulty: Unknown | Os: Unknown/Multiple Blocking: | Architecture: Unknown/Multiple Failure: None/Unknown| -+-- Comment(by igloo): It should be patch rather than please merge (which is for merging from HEAD to STABLE branch). I've just updated http://www.haskell.org/haskellwiki/Library_submissions to say that. Also, please link to the start of the thread on the mailing list. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:20 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend -+-- Reporter: bos | Owner: Type: proposal| Status: closed Priority: normal | Milestone: Not GHC Component: libraries/base |Version: 6.10.3 Resolution: wontfix | Keywords: Difficulty: Unknown | Os: Unknown/Multiple Testcase: | Architecture: Unknown/Multiple Failure: None/Unknown| -+-- Changes (by igloo): * status: new = closed * resolution: = wontfix Comment: Looks like an abandoned proposal. If that's not the case, please re-open and give a discussion summary and consensus decision, as described on the [http://www.haskell.org/haskellwiki/Library_submissions process page]. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:16 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler ___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add () as a synonym for mappend
#3339: Data.Monoid: Add () as a synonym for mappend -+-- Reporter: bos |Owner: Type: proposal | Status: new Priority: normal|Milestone: Not GHC Component: libraries/base| Version: 6.10.3 Severity: normal| Resolution: Keywords:| Difficulty: Unknown Testcase:| Os: Unknown/Multiple Architecture: Unknown/Multiple | -+-- Changes (by bos): * summary: Data.Monoid: Add (+) as a synonym for mappend = Data.Monoid: Add () as a synonym for mappend Comment: The revised proposal is now as follows: Use {{{}}}, with fixity of {{{infixr 6 }}}. The change would also involve updating the pretty-print library to use the monoidal version of this operator. Let's wrap this up in two weeks, this time for sure :-) -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:14 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add (+) as a synonym for mappend
#3339: Data.Monoid: Add (+) as a synonym for mappend --+- Reporter: bos | Owner: Type: bug | Status: new Priority: normal| Milestone: Component: libraries/base|Version: 6.10.3 Severity: normal| Resolution: Keywords:| Testcase: Os: Unknown/Multiple | Architecture: Unknown/Multiple --+- Comment (by jeltsch): What are the exact backward-compatibility problems? I can only think of cases like {{{ cat = (++) }}} which only matter because the monomorphism restriction is still in use. The “confusing newbiews with weird error messages” problem is already present in several places. For example, the expression {{{1 + 'A'}}} will make GHC complain that there is no instance for {{{(Num Char)}}}. I think, it would be better to try to generate better error messages instead of increasing the number of operators. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:12 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add (+) as a synonym for mappend
#3339: Data.Monoid: Add (+) as a synonym for mappend -+-- Reporter: bos |Owner: Type: proposal | Status: new Priority: normal|Milestone: Not GHC Component: libraries/base| Version: 6.10.3 Severity: normal| Resolution: Keywords:| Difficulty: Unknown Testcase:| Os: Unknown/Multiple Architecture: Unknown/Multiple | -+-- Changes (by igloo): * difficulty: = Unknown * type: bug = proposal * milestone: = Not GHC -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:13 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add (+) as a synonym for mappend
#3339: Data.Monoid: Add (+) as a synonym for mappend --+- Reporter: bos | Owner: Type: bug | Status: new Priority: normal| Milestone: Component: libraries/base|Version: 6.10.3 Severity: normal| Resolution: Keywords:| Testcase: Os: Unknown/Multiple | Architecture: Unknown/Multiple --+- Comment (by jeltsch): I agree. Since {{{(++)}}} is {{{mappend}}} for a specific type, it makes much sense to just generalize {{{(++)}}} to work with arbitrary {{{Monoid}}} instances. There is also a poll about this topic which has a strong bias to making {{{(++)}}} the new {{{mappend}}}: http://doodle.com/4yrfd7qaw5man3rm. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:10 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add (+) as a synonym for mappend
#3339: Data.Monoid: Add (+) as a synonym for mappend --+- Reporter: bos | Owner: Type: bug | Status: new Priority: normal| Milestone: Component: libraries/base|Version: 6.10.3 Severity: normal| Resolution: Keywords:| Testcase: Os: Unknown/Multiple | Architecture: Unknown/Multiple --+- Comment (by JulesBean): Technical decisions are not best made by democracy. A poll is not interesting. What is interesting is arguments of substance. (++) is a sensible choice but has backward-compatibility problems, and confusing newbies with weird error messages problems. It is only for those reasons that I didn't choose it. If we're choosing something new, then + has the advantage of being visually flippable, but has the advantage of being already used in (at least) two other monoids. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:11 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add (+) as a synonym for mappend
#3339: Data.Monoid: Add (+) as a synonym for mappend --+- Reporter: bos | Owner: Type: bug | Status: new Priority: normal| Milestone: Component: libraries/base|Version: 6.10.3 Severity: normal| Resolution: Keywords:| Testcase: Os: Unknown/Multiple | Architecture: Unknown/Multiple --+- Comment (by jochemb): Generalizing (++) may be confusing for newbies, but I think this is the best way to go. (+) and (+) are totally asymmetric, like (=) and (*), whereas the type of (+) is Monoid a = a - a - a (++) is (pretty obviously) not commutative, like () and (), where there can be no confusion. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add (+) as a synonym for mappend
#3339: Data.Monoid: Add (+) as a synonym for mappend --+- Reporter: bos | Owner: Type: bug | Status: new Priority: normal| Milestone: Component: libraries/base|Version: 6.10.3 Severity: normal| Resolution: Keywords:| Testcase: Os: Unknown/Multiple | Architecture: Unknown/Multiple --+- Comment (by david48): In my opinion as a newbie, there are far more confusing things for newbies than (++) being the mappend of monoids. And anyways, monoids is far from being the hardest thing to understand in haskell, once you read a few well written blog posts. You can still learn to use ++ as the concatenation operator for strings, and discover later that there is more to it than it looks. I support generalizing the type of (++) -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add (+) as a synonym for mappend
#3339: Data.Monoid: Add (+) as a synonym for mappend --+- Reporter: bos | Owner: Type: bug | Status: new Priority: normal| Milestone: Component: libraries/base|Version: 6.10.3 Severity: normal| Resolution: Keywords:| Testcase: Os: Unknown/Multiple | Architecture: Unknown/Multiple --+- Comment (by JulesBean): There is no universal convention that symmetric-looking operators should be commutative. However, it is certainly a handy visual guide. To address specific points: () looks commutative to me, and it *is* commutative, in the _|_ free fragment of haskell. That's the fragment I most commonly reason about. You don't get many algebraic laws without that. Similarly (||). () looks uncommutative - it's not about repeated symbols, it's about the way the symbols obviously 'point' in one direction. And, () *is* noncommutative, of course. Concrete advantages for (+): * It has a symbol which visually indicates direction, and mappend is often a directional operation in some sense; * It can be 'naturally' flipped to yield +; it's useful to have a short name for flip mappend. The latter is the key point. The reason to use + is so we can use +. I rejected using (++) not just because it looks too symmetric (that's not a big problem, it doesn't confuse people too much) but simply because the backwards-compatibility damage of changing the type of a very very widely used operator is very significant. By contrast, (+) is not used in any widely used libraries, certainly not in base, and the backwards-compatibility damage of adding a new symbol to Data.Monoid is relatively low. No worse than adding any other new function to an API. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add (+) as a synonym for mappend
#3339: Data.Monoid: Add (+) as a synonym for mappend --+- Reporter: bos | Owner: Type: bug | Status: new Priority: normal| Milestone: Component: libraries/base|Version: 6.10.3 Severity: normal| Resolution: Keywords:| Testcase: Os: Unknown/Multiple | Architecture: Unknown/Multiple --+- Comment (by duncan): Is there any evidence for why a flipped mappend is useful? -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add (+) as a synonym for mappend
#3339: Data.Monoid: Add (+) as a synonym for mappend --+- Reporter: bos | Owner: Type: bug | Status: new Priority: normal| Milestone: Component: libraries/base|Version: 6.10.3 Severity: normal| Resolution: Keywords:| Testcase: Os: Unknown/Multiple | Architecture: Unknown/Multiple --+- Comment (by JulesBean): I think it's useful for Endo a, where you sometimes want to postcompose and sometimes precompose functions. I think it's useful for any monoid which represents something like the composition of a graphical image, where precomposition is putting something 'underneath' and postcomposition is putting something 'on top'. I suspect you quite often get Monoids along those general lines in DSLs; I've certainly seen a view. Of course the case for a special flipped operator can never be that strong; you can always just write an expression the other way around. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add (+) as a synonym for mappend
#3339: Data.Monoid: Add (+) as a synonym for mappend --+- Reporter: bos | Owner: Type: bug | Status: new Priority: normal| Milestone: Component: libraries/base|Version: 6.10.3 Severity: normal| Resolution: Keywords:| Testcase: Os: Unknown/Multiple | Architecture: Unknown/Multiple --+- Comment (by bkomuves): +1 vote for generalizing (++). I think flipped mappend is so rare that writing flip (++) is actually easier to read. And you can still define your own + and + if you use them a lot. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:8 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add (+) as a synonym for mappend
#3339: Data.Monoid: Add (+) as a synonym for mappend --+- Reporter: bos | Owner: Type: bug | Status: new Priority: normal| Milestone: Component: libraries/base|Version: 6.10.3 Severity: normal| Resolution: Keywords:| Testcase: Os: Unknown/Multiple | Architecture: Unknown/Multiple --+- Comment (by tibbe): I agree with generalizing (++). Are there any programs that will break because of that generalization? My argument for reusing (++) is that I'd like to keep the number of different operators I have to memorize (in particular when reading other people's code) to a minimum. I only think very fundamental type classes deserve operators (e.g. Monad, Functor, Monoid, Num). -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:9 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add (+) as a synonym for mappend
#3339: Data.Monoid: Add (+) as a synonym for mappend --+- Reporter: bos | Owner: Type: bug | Status: new Priority: normal| Milestone: Component: libraries/base|Version: 6.10.3 Severity: normal| Resolution: Keywords:| Testcase: Os: Unknown/Multiple | Architecture: Unknown/Multiple --+- Comment (by duncan): I dislike the asymmetry. The ++ operator is not commutative but we don't artificially make it visually asymmetric. Why not take Ross's proposal and use as in Data.Sequence. For the sake of the discussion, perhaps someone should also explain why we cannot just generalise the type of ++. There's a separate argument that we should not. Also, what is the purpose of the flipped append? Why do we want to dedicate a symbol for flipped append? I use monoid operations a lot and I cannot think of a single use of flipped append. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
Re: [GHC] #3339: Data.Monoid: Add (+) as a synonym for mappend
#3339: Data.Monoid: Add (+) as a synonym for mappend --+- Reporter: bos | Owner: Type: bug | Status: new Priority: normal| Milestone: Component: libraries/base|Version: 6.10.3 Severity: normal| Resolution: Keywords:| Testcase: Os: Unknown/Multiple | Architecture: Unknown/Multiple --+- Comment (by ajd): What is wrong with generalizing the type of (++)? If it would not break too much code (on first glance, I'm not sure how it would), I think that that would be the best solution. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/3339#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler___ Glasgow-haskell-bugs mailing list Glasgow-haskell-bugs@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs