I have solved for the Functor: instance Functor Expr where: --fmap :: (a->b) -> Expr a -> Expr b fmap g (Var x) = Var (g x) fmap _ (Val y) = Val y fmap (Add l r) = Add (fmap g l) (fmap g r). I hope this is correct, but im having a hard time solving the applicative this is my try: instance Applicative Expr where: -- pure :: Expr -> a pure a = Expr a -- <*> :: Expr (a->b) -> Expr a -> Expr b <*> = can you please help correct the functor and solve the applicative. Thank you very much!
Given the following type of expressions
data Expr a = Var a | Val Int | 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 >>= operator for this type does
I have solved for the Functor:
instance Functor Expr where:
--fmap :: (a->b) -> Expr a -> Expr b
fmap g (Var x) = Var (g x)
fmap _ (Val y) = Val y
fmap (Add l r) = Add (fmap g l) (fmap g r).
I hope this is correct, but im having a hard time solving the applicative this is my try:
instance Applicative Expr where:
-- pure :: Expr -> a
pure a = Expr a
-- <*> :: Expr (a->b) -> Expr a -> Expr b
<*> =
can you please help correct the functor and solve the applicative. Thank you very much!
Step by step
Solved in 3 steps