Introducing Functors
fmap is like an abstract map; we do not add constraints in data type definitions