Written July 22, 2013 You should know what a functor is before reading this post. Read this to learn about functors. Suppose you want to make a game: data Point = Point { _x, _y :: Double } data Mario = Mario { _location :: Point } player1 = Mario (Point 0 0)