Hi Daniel,
Instead of raising an error it's more secure to return a Maybe value.
date :: Int -> Maybe Date
date serialNumber
| serialNumber > 0 = Just $ Date serialNumber
| otherwise = Nothing
yes, I understand (Maybe seems the equivalent of c++'s boost::optional<T>).
-- smart constructor with day month year
date2 day month year
| month >= 1 && month <=12 = undefined
| otherwise = error ("invalid month " ++ show month)
To increase type safety it's a good idea to use as much explicit data
types instead of Int values as possible:
data Month = January | ...
ok, I will try to change my code in that direction. The idea is clear.
I would use the descriptive names but leave out the 'date', because you could
still have:
import qualified Date
Date.fromSerialNumber
also clear, yes. I think I have a better starting point now. Not
impossible that I will come back later with further questions :-)
Thank you for your help
Peter
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe