Given the following type of expressions
data Expr a = Var a | Val Int | Add
(Expr a) (Expr a)
deriving Show
data Expr a = Var a $\mid$ Val Int $\mid$ Add
(Expr a) (Expr a)
deriving show
that contain variables of some type a, show how to make this type into instances of the Functor, Applicative and Monad classes. With the aid of an example, explain what the $\gg>=$ operator for this type does.