Есть фунуция которая создает только побочные эффекты foo x = do putStrLn ("test2"++show(x))
main::IO() main = do list<-return (map (foo) [1..10]) return ()
в результате ничего не выводится возможно сделать дополнительно функцию test2 [] = return () test2 (x:xs) = do tmp<-x test xs return ()
тогда вызов test2 list таки заставляет вычислять все, но это ужасно некрасиво еще пробовал использовать $!
foo x = do putStrLn ("Artem2"++show(x))
main::IO() main = do return (map (\x -> id $! (foo x)) [1..10]) return ()
по идее он должен сначала вычислить foo x но опять же ничего не происходит, никак не пойму в чем загвоздка компилятор GHC 6.8.2