Reimplemented liftA, liftM and added Do syntax