to se mi nějak nezdá, jak se pomocí monadického rozhraní poskládá (např.) seznam?
Pokud jsem pochopil otazku, tak by mohlo vysvetlit tohle:
https://en.wikibooks.org/wiki/Haskell/Understanding_monads/List
možná tam je, ale já ji nevidim, možná jsem se v tom trošku ztratil
otázka by mohla být jak pomocí (>>=) a return (když už teda chcete haskell) udělám z [1] a [2] hodnotu [1,2]
Myslím, že zboj myslel spíš to, že pomocí bindu můžu hezky "simulovat" map i flatMap:
map:
Prelude> [1,2,3] >>= (\x -> [x*2])
[2,4,6]
flatMap:
Prelude> [1,2,3] >>= (\x -> [x,x])
[1,1,2,2,3,3]
filter:
Prelude> [1,2,3] >>= (\x -> if x==1 then [] else [x])
[2,3]
...ale ne naopak, čili bind je "silnější"/"obecnější" koncept.
Samozřejmě to neznamená, že by si nějaká obecná fce nad monádami vycucala z prstu, že když dostane dva listy, tak je má zřetězit, to jí samozřejmě musím nějak říct, že má udělat zrovna toto
