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