Przykłady monad, których część aplikacyjna może być lepiej zoptymalizowana niż część Monad

W jednej dyskusji to słyszałemApplicative Interfejs niektórych parserów jest implementowany inaczej, bardziej efektywnie niż ichMonad berło. Powód jest takiApplicative znamy wszystkie „efekty” z wyprzedzeniem, zanim uruchomimy wszystkie skuteczne obliczenia. W przypadku monad efekty mogą zależeć od wartości podczas obliczeń, więc ta optymalizacja nie jest możliwa.

Chciałbym zobaczyć kilka dobrych przykładów tego. Może to być bardzo prosty parser lub inna monada, to nie jest ważne. Ważne jest to, żeApplicative interfejs takiej monady jest zgodny z jejreturn iap, ale używającApplicative produkuje bardziej wydajny kod.

Aktualizacja: Aby wyjaśnić, nie interesują mnie aplikacje, które nie mogą być monadami. Pytanie dotyczy obu rzeczy.

questionAnswers(3)

yourAnswerToTheQuestion