Изучая функторы, аппликативные функторы и монады в Haskell, я нашел это определение на Wikipedia:
В функциональном программировании, в частности, Haskell, functor - это структура, которая похожа на монаду (
return
,fmap
,join
) безjoin
или как функтор сreturn
.
Я не могу понять: мне кажется, что предоставление return
(т.е. pure
) функтору недостаточно для получения аппликативного функтора, потому что вам нужно предоставить ap
(т.е. <*>
) также, которые не могут быть определены только в терминах fmap
и return
. Я пропустил что-то или определение Википедии не совсем правильно?
EDIT 2017-02-08: Я нашел другую полезную информацию по этому вопросу в ответе this.