relax constraint. s/ApplicativeSemigroup/ApplySemigroup