[Haskell-cafe] Sets, typeclasses and functional dependencies
Stuart Hungerford
stuart.hungerford at gmail.com
Sat Jul 31 10:14:36 UTC 2021
On Sat, Jul 31, 2021 at 7:14 PM Henning Thielemann
<lemming at henning-thielemann.de> wrote:
> [...]
> A more modern approach would use type functions:
>
> class Setish set where
> type Element set
> empty :: set
> singleton :: Element set -> set
Thanks for the pointer.
> > My question is how does the functional dependency in Setish interact
> > with "extra" types needed for richer set operations like finding the
> > powerset or taking a cartesian product?
>
> powerset would need a type like:
>
> powerset ::
> (Powersettish powerset, Element powerset ~ set, Setish set) =>
> set -> powerset
>
> with an extra Powersettish class.
>
> However, the type checker could not guess the exact powerset type, it
> could be, e.g.
> powerset :: Set a -> Set (Set a)
> or
> powerset :: Set a -> [Set a]
Okay, I'm starting to see why the "Set" typeclass examples I could
find don't include a powerset or cartesian product method.
Thanks again,
Stu
More information about the Haskell-Cafe
mailing list