PARAMETRIC POLYMORPHISM
PROTOCOLS ▸ Give a definition of a function name per data type or struct “type”
defimpl Witchcraft.Monoid, for: List do def identity(_list), do: [] def append(as, bs), do: as ++ bs end defimpl Witchcraft.Monoid, for: Map do def identity(_map), do: %{} def append(ma, mb), do: Dict.merge(ma, mb) end