
On Tue, Jun 14, 2011 at 3:07 PM, Haisheng Wu
Hi guys, What I understanding `deriving` is Haskell automatically make a type to be a instance of a particular typeclass. If that's the case, the question is How does Haskell do that underline?
Take code below as sample, the type Day is now an instance of Bounded.
data Day = Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday deriving (Bounded, Enum)
Therefore, minBound :: Day will produce Monday.
Just be curious how it is being implemented.
It takes into account the order of the constructors. Don't know exactly right now, but I think that behind the scenes each of them is tagged appropriately and minBound simply takes the minimum tag or something like that. I'd look into the sources but I am unable to do so right now.