Coping with multiple meanings of `<>`
Sylvain Henry
sylvain at haskus.fr
Wed Dec 15 08:53:42 UTC 2021
Hi Norman,
Usually in the compiler Semigoup's <> is imported qualified. But I agree
it's ugly.
The trouble with Outputable's <> is that:
1) it doesn't have the same associativity as Semigroup's <>
2) <+> interacts weirdly with <> (cf
https://mail.haskell.org/pipermail/libraries/2011-November/017066.html)
I have rediscovered this when trying to fix it 2 months ago:
https://gitlab.haskell.org/hsyl20/ghc/-/commits/hsyl20/outputable-append
I have tried to add a new constructor to fix (2)
https://gitlab.haskell.org/hsyl20/ghc/-/commit/5d09acf4825a816ddb2ca2ec7294639b969ff64b
but it's still failing
(https://gitlab.haskell.org/hsyl20/ghc/-/jobs/791114).
Any help fixing these issues would be appreciated :)
Cheers,
Sylvain
On 14/12/2021 20:23, Norman Ramsey wrote:
> I find myself wanting to define instances of Semigroup (and Monoid)
> in a file that also imports GHC.Utils.Outputable and its `<>` operation
> on SDocs. At the moment I am dealing with the incompatibility by
> hiding the Outputable version and instead of writing `s1 <> s2` I write
> `hcat [s1, s2]`. This workaround seems ugly and vaguely embarrassing.
>
> How are others dealing with this issue? Would it be sensible simply
> to make SDoc an instance of Semigroup (and Monoid), or would we be
> concerned about potential additional overhead at compile time?
>
>
> Norman
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
More information about the ghc-devs
mailing list