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.