My prosaic solution would be to have more stock implementations of mconcat
(here balancedMconcat, though some parallelMconcat's would also be fun) that
make use of the associativity guarantee.  Then use that explicitly:--

balancedMconcat . fmap Sum $ [a, b, c, 2, 3, d]

rather than asking the compiler to be magic for you.

Freddie

On 14 September 2010 13:11, Bas van Dijk <[email protected]> wrote:

> Oops, I mixed up associative with commutative.
>
> On Tue, Sep 14, 2010 at 1:27 PM, Bas van Dijk <[email protected]>
> wrote:
> > On Mon, Sep 13, 2010 at 4:23 PM, Nick Bowler <[email protected]>
> wrote:
> >> ... not all Num instances have an associative (+).
> >
> > Indeed:
> >
> > $ cabal install repr    # [1]
> > ...
> > $ ghci
> > Prelude> :m Text.Repr
> > Prelude Text.Repr> show (1 + 2 :: Repr Int) == show (2 + 1 :: Repr Int)
> > False
> >
> > because:
> > show (1 + 2 :: Repr Int) == "1 + 2"
> > show (2 + 1 :: Repr Int) == "2 + 1"
> >
> > but note:
> > Prelude Text.Repr> (1 + 2 :: Repr Int) == (2 + 1 :: Repr Int)
> > True
> >
> > Bas
> >
> > [1] http://hackage.haskell.org/package/repr
> >
> _______________________________________________
> Haskell-prime mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell-prime
>
_______________________________________________
Haskell-prime mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-prime

Reply via email to