interface Semigroup a where
(<>) : a -> a -> a
Un type muni d'une opération binaire associative (<>). (++) (ci-dessous) en est un synonyme, conventionnel sur les listes et les chaînes.
import nécessaire.interface Semigroup a where
(<>) : a -> a -> a
Un type muni d'une opération binaire associative (<>). (++) (ci-dessous) en est un synonyme, conventionnel sur les listes et les chaînes.
(++) : Semigroup a => a -> a -> a
(++) est un synonyme de (<>) — conventionnel sur les listes et les chaînes, là où le type concret est connu. En code polymorphe, préférer (<>).
interface Semigroup a => Monoid a where
mempty : a
Un semigroupe avec un élément neutre mempty. Lois : mempty <> x == x et x <> mempty == x.
concat : Monoid m => List m -> m
Concatène une liste de valeurs d'un monoïde : concat [a, b, c] = a <> b <> c, et concat [] = mempty. Fonctionne sur n'importe quel Monoid — listes de listes, listes de chaînes, … — en combinant les éléments dans l'ordre avec (<>), avec mempty comme résultat pour la liste vide. concat ["a", "b", "c"] = "abc" concat [[1], [2, 3]] = [1, 2, 3]