<div dir="ltr">This would all be much easier with pattern matching. For example:<div><br></div>instance Functor Val where<br>  fmap f (Val x) = Val (f x)<br><br>instance Applicative Val where<br>  pure = Val<br>  Val f <*> Val x = Val (f x)</div>