[Haskell-cafe] RFC: functor-classes-compat

Oleg Grenrus oleg.grenrus at iki.fi
Tue Dec 13 18:26:51 UTC 2016

On 13.12.2016 19:06, David Feuer wrote:
> On Dec 13, 2016 4:01 AM, "Oleg Grenrus" <oleg.grenrus at iki.fi
> <mailto:oleg.grenrus at iki.fi>> wrote:
>     Hi,
>     continuing pushing the adoption Data.Functor.Classes, I wrote a small
>     package `functor-classes-compat` [1].
>     It provides lifted (Eq1, Ord1, etc.) classes for types in
>     `containers`,
>     `vector` and `unordered-containers`(not for Sequence or Tree yet
>     though).
> Thanks for working on this. Obviously, some of these really belong in
> containers. I'll try to add them today.

Thanks to you!

>     I guess there is no way they could depend on `transformers` to provide
>     instances in build plans with `base < 4.9`, I'm not sure when I'll
>     have
>     time to write patches for the actual packages myself.
> No, I don't think that's likely. One option might be to add these
> instances to transformers when compiling with older base, but I don't
> know if Ross Paterson will want them.

I'm not sure we want `transformers`  to depend on `containers` either,
not even mentioning `vector` and `unordered-containers`. Also there are
people stuck with `transformers-0.4` (GHC 7.10).

>     Current implementations are naive, but more obviously correct.
> More than what?

It seems that implementation for Data.Map is indeed "check size, compare
lists", but e.g for vector it uses streaming framework to make things
fuse, I still use "check size, compare lists" approach.
Also I see that my `HashMap` implementation is actually incorrect, as
HashMap's `toList` may return results in different order (depends on the

More information about the Haskell-Cafe mailing list