DK
Size: a a a
DK
AP
a -> comarable
с собой постоянно :)DK
AP
makeDict toKey =
{ insert : ...
, lookup
...
}
let d = makeDict toString
in d.empty
|> d.insert (1, 2) "foo"
|> d.insert (5, 7) "bar"
AP
AP
AP
d = withKey toString <| withMonoid merge <| {}
DK
type alias Semigroup r a =
{ r | concat : a -> a -> a }
type alias Monoid r a =
Semigroup { r | mempty : a } a
instance : Semigroup r a -> { mempty : a } -> Monoid {} a
instance { concat } { mempty } =
{ concat = concat
, mempty = mempty
}
-- Data.List
semigroup : Semigroup {} (List a)
semigroup =
{ concat = (++) }
monoid : Monoid {} (List a)
monoid =
Data.Monoid.instance semigroup { mempty = [] }
AP
AP
DK
DK
DK
DK
PS
AK
AK
AP
AP
AP