Foldable
es la clase de tipos t :: * -> *
que admite una operación de plegado . Un pliegue agrega los elementos de una estructura en un orden bien definido, utilizando una función de combinación.
Si t
es Foldable
significa que para cualquier valor ta
sabemos cómo acceder a todos los elementos de a
desde "adentro" de ta
en un orden lineal fijo. Este es el significado de foldMap :: Monoid m => (a -> m) -> (ta -> m)
: "visitamos" cada elemento con una función de resumen y rompemos todos los resúmenes juntos. El orden de respeto de los Monoid
(pero son invariantes a diferentes agrupaciones).