module Facts.Geography.Countries.UnitedStates.ZipCode where
import Data.Data
import Data.Numerals.Decimal
import Data.Typeable
type Digit = DecimalDigit
data ZipCode = ZipCode { zip_code :: (Digit,Digit,Digit,Digit,Digit)
, plus4 :: Maybe (Digit,Digit,Digit,Digit)
} deriving (Data, Eq, Ord, Typeable)
instance Show ZipCode where
show ( ZipCode (z1,z2,z3,z4,z5 )
(Just (p1,p2,p3,p4) ) ) = (concatMap show [z1,z2,z3,z4,z5])
++ " + "
++ (concatMap show [p1,p2,p3,p4])
show ( ZipCode (z1,z2,z3,z4,z5) Nothing) = (concatMap show [z1,z2,z3,z4,z5])