Я видел, что тип pure 1
составляет (Num a, Applicative f) => f a
, что совершенно очевидно. Так что, если я хотел бы сделать его Maybe Int
:Haskell - Аппликативные/Monad экземпляры
Prelude> pure 1 :: Maybe Int
Just 1
Что об этом?
Prelude> pure 1
1
Prelude> return 1
1
Что происходит? Почему он не жалуется, что не знает, какой экземпляр выбрать?
Редактировать
Я думаю, что такое поведение на самом деле не имеет ничего общего с монадами или аппликативными, но это был контекст, я пришел к нему ...
см. 'Return True' в [Действия ввода/вывода в командной строке] (https://downloads.haskell.org/~ghc/7.8.4/docs/html/users_guide/interactive-evaluation.html) –