Konkretny przykład pokazujący, że monady nie są zamknięte w składzie (z dowodem)?
Dobrze wiadomo, że funktory aplikacyjne są zamknięte w składzie, ale monady nie są. Mam jednak problem ze znalezieniem konkretnego kontrprzykładu pokazującego, że monady nie zawsze się komponują.
Ta odpowiedź daje[String -> a]
jako przykład nie-monady. Po dłuższej zabawie w to wierzę intuicyjnie, ale ta odpowiedź mówi po prostu, że „nie można zaimplementować” bez podania żadnego uzasadnienia. Chciałbym coś bardziej formalnego. Oczywiście istnieje wiele funkcji z typem[String -> [String -> a]] -> [String -> a]
; należy pokazać, że każda taka funkcja z konieczności nie spełnia praw monad.
Dowolny przykład (z towarzyszącym dowodem) zrobi; Nie koniecznie szukam dowodu w szczególności na powyższy przykład.