ОК, поэтому я знаю, что содержит класс типа Applicative
, и почему это полезно. Но я не могу полностью охватить мой мозг тем, как вы будете использовать его в нетривиальном примере.
Рассмотрим, например, следующий довольно простой парсер Parsec:
integer :: Parser Integer
integer = do
many1 space
ds <- many1 digit
return $ read ds
Теперь, как вы могли бы написать это без использования экземпляра Monad
для Parser
? Многие люди утверждают, что это можно сделать и это хорошая идея, но я не могу понять, как именно.