Одним из примеров из Learn You a Haskell является:Явное определение которой чистая функция использовать
pure (+) <*> Just 3 <*> Just 5
Он утверждает:
Таким образом, на первом, мы имеем
pure (+)
, которыйJust (+)
Я предполагая, что Haskell использует вывод типа в функции <*>
, чтобы определить, что функция pure
на LHS будет той, которая является экземпляром класса Maybe
класса типа Applicative
(исходя из того, что мы используем Just 5
на RHS, а Just
a Maybe
).
Однако, есть ли когда-либо случай, когда у вас есть значение, которое вы хотели бы превратить в аппликативный functor, используя метод pure
, но вы не будете использовать его сразу же через функцию <*>
, и, таким образом, Haskell может Определите, какую функцию использовать pure
? Если да, то как бы вы были в явном состоянии, какая функция pure
использовать?
Или это тот случай, когда Haskell не будет пытаться определить, какие pure
функции до результата функции pure
не используется в определенном контексте (например, когда вы кормите его в <*>
функции в некоторой точке)
Это вопрос вывода типа. – dave4420