Этот вопрос возник при чтении новой главы отличного Learn You a Haskell, посвященной аппликативным функторам.
Класс типов Applicative включает в себя как часть определения экземпляра Maybe:
pure = Just
Если я просто перейду в GHCi и импортирую Control.Applicative, и сделаю:
pure (3+)
Я ничего не понимаю (имеет смысл). Но если я использую его в части выражения:
pure (3+) <*> Just 4
У меня всего 7. Я думаю, это тоже не удивительно, но мне не хватает чего-то важного в том, как работают классы типов, я думаю, что здесь нет двусмысленности с вызовом pure
.
Если мое замешательство имеет смысл, может ли кто-нибудь подробно объяснить, что происходит?