I'm happy with myself for at least mostly getting what those were. I think I'd have to see more uses to really see the benefit, though.
I am curious on minBound and maxBound. They seem to be the same... What distinguishes them? Or, you are just saying these are two values that are defined. And they can only be given a value of a type that can be bounded?
Also, thanks for expanding!