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
