Newtypes

Newtypes

newtypes are used to distinguish two types which have have the same type of value but different units/meanings.

For example:

newtype Email = Email String

m1 :: Map Email Integer
m1 = empty
--This is forces us to only pass a String with a contrutor Email.
--So insert "abc" 123 m1 will fail