mapM для списков
Читал про монады, наткнулся на несамочевидную шизу с mapM для списков:
mapM (\x -> [x-1, x+1]) [10,20,30]
[ [9,19,29], [9,19,31], [9,21,29], [9,21,31], [11,19,29], [11,19,31], [11,21,29], [11,21,31] ]
Пришлось лезть в ghci и описание устройства mapM, чтобы не сойти с ума.
mapM (\x -> [x-1, x+1]) [10,20,30]
[ [9,19,29], [9,19,31], [9,21,29], [9,21,31], [11,19,29], [11,19,31], [11,21,29], [11,21,31] ]
Пришлось лезть в ghci и описание устройства mapM, чтобы не сойти с ума.
no subject
Prelude Control.Monad> replicateM 3 [0,1]
[[0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1]]