4.3. Another Example

Any function in the "Show" typeclass can be printed or converted to a string.

concatWithIsaac :: (Show a) => a -> String
concatWithIsaac item = "Isaac: " ++ (show item)

Since dayToString can converta day of the week to a string, DaysOfWeek can be an instance of the "Show" typeclass. Here's how we convert a DaysOfWeek to a String:

data DaysOfWeek = Sunday | Monaday | Tuesday | Wednesday | Thursday | Friday | Saturday

dayToString :: DaysOfWeek -> String
dayToString Sunday = "Sunday"
dayToString Monaday = "Monaday"
dayToString Tuesday = "Tuesday"
dayToString Wednesday = "Wednesday"
dayToString Thursday = "Thursday"
dayToString Friday = "Friday"
dayToString Saturday = "Saturday - Hurray!"

And here's how we overload the "show" function:

instance Show DayOfWeek where
    show day = dayToString day