I am not sure why the constructor is used on the LHS of (2)
lift1 :: (a -> a) -> b a -> b a
lift1 o (MyNum x) = MyNum (o x)
2nd arg to lift1 is b a
o expects a
by adding ctor (MyNum a), we get to a
lift1 o (b a) = ...
without ctor MyNum, x is b a, not a