Да. Из документации для Applicative
:
Другие методы имеют следующие определения по умолчанию, которые могут быть переопределены эквивалентными специализированными реализациями:
-
u *> v = (id <$ u) <*> v
u <* v = liftA2 const u v
Ключевое слово "эквивалент". Поскольку ваши определения эквивалентны этим определениям *, они также должны быть эквивалентны определениям всех законных заявителей.
* Если вы не уверены, что ваши определения эквивалентны этим определениям, вот несколько советов:
fmap f x = f <$> x
liftA2 f x y = f <$> x <*> y
flip const = const id
x <$ m = const x <$> m