[Haskell-cafe] Improving the docs (specifically Data.Foldable)

Viktor Dukhovni ietf-dane at dukhovni.org
Fri Oct 1 09:24:30 UTC 2021


On Fri, Oct 01, 2021 at 10:05:30AM +0100, Tom Ellis wrote:

> > But performance may differ radically, and `toList` may diverge for
> > `snocList` when infinite on the left, though that's a rather
> > pathological example.
> 
> If one can't write Foldable-generic functionality in a way that
> provides some reasonable uniformity of performance over different
> instances then one wonders what is point of having Foldable as a
> typeclass at all.  At that point it's just name overloading.

This is why I was reluctant originally to say anything about
right-biased structures... They break established expectations.

I focused mostly on symmetric structures, for which left and right folds
should perform identically (if instances properly take advantage of the
symmetry), these are I think practical.  About right-biased structures I
said:

    https://dnssec-stats.ant.isi.edu/~viktor/haskell/docs/libraries/base/Data-Foldable.html#g:8

        Finally, in some less common structures (e.g. snoc lists) right
        to left iterations are cheaper than left to right. Such
        structures are poor candidates for a Foldable instance, and are
        perhaps best handled via their type-specific interfaces. If
        nevertheless a Foldable instance is provided, the material in
        the sections that follow applies to these also, by replacing
        each method with one with the opposite associativity (when
        available) and switching the order of arguments in the fold's
        operator.

Concrete suggestions to address any issues in this section (now that the
title is no longer "Chirality") are welcome (MR 6555).

    https://gitlab.haskell.org/ghc/ghc/-/merge_requests/6555

-- 
    Viktor.


More information about the Haskell-Cafe mailing list