Sind die folgenden zwei Implementierungen von flatten gleichwertig für alle wohlerzogenen Monaden?Rückgabe eines aus einer Monade extrahierten Elements; redundant?
flatten1 xss = do
xs <- xss
x <- xs
return x
flatten2 xss = do
xs <- xss
xs
Yup, 100% identisch. Sie könnten einfach 'Control.Monad' importieren und' Join' schreiben oder 'xss >> = id' verwenden. –
Ja. 'tue {...; x <- m; return x} 'ist immer gleich' do {...; m} '. –