我在Real World Haskell的I/O章節。本書不討論Monad的另外7章。也就是說,我對I/O的理解充其量是不完整的。map對mapM行爲
現在我正試圖理解mapM函數。據我所知,函數「執行」列表中的每個元素必須是「動作」(IO monad)。
沒有任何意義的是this example。爲什麼mapM對於相同的參數返回與map不同的結果?
Prelude> map (\x -> [x]) [0, 1, 2] [[0],[1],[2]] Prelude> mapM (\x -> [x]) [0, 1, 2] [[0,1,2]]
也有趣:'長度(mapM(\\ _-> a)b)==長度a ^長度b'。我認爲。 – muhmuhten 2010-06-29 01:08:45