
Hi,
Map.mapKeys has constraint (Ord k2) and IO a does not provide instance of Ord.
One way to make a way around this, I can come up with is :
import Data.Map
test_a :: Map Int Int
test_a = fromList [ (i, i) | i <- [1..10] ]
print_a :: Int -> IO Int
print_a a = ( putStrLn.show $ a ) >> return a
test_b :: IO (Map Int Int)
test_b = fmap fromList $ mapM (\ (a, b) -> (do
t <- print_a a
return (t, b) )) $ toList test_a
Thanks
Divyanshu Ranjan
On Thu, Oct 17, 2013 at 2:43 PM, Lorenzo Tabacchini
I think I am looking at the problem in a wrong way...
What I want to do is using higher-order functions with IO (or an IO-based transformer).
For example, let's say I want to apply a function to all the keys in a Map. With pure functions, I would do: Map.mapKeys doSomething myMap
But let's suppose the function has a signature: doSomething :: a -> IO b
Is there an easy way to apply it? _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners