Czy są następujące dwie implementacje równoważenia spłaszczenia dla wszystkich dobrze zachowanych Monad?zwracając element wyodrębniony z monady; zbędny?
flatten1 xss = do
xs <- xss
x <- xs
return x
flatten2 xss = do
xs <- xss
xs
Tak, 100% identyczne. Możesz po prostu zaimportować 'Control.Monad' i napisać' join' lub użyć 'xss >> = id'. –
Tak. 'do {...; x <- m; return x} 'jest zawsze równe' do {...; m.} '. –