
2 Jul
2011
2 Jul
'11
1:23 a.m.
On Jul 1, 2011, at 1:08 PM, Dennis Raddle wrote:
It's been about a year since I used Haskell and I'm rusty. I think I knew how to do this once, but I need a reminder.
I've got some functions:
getDeviceInfo :: Int -> IO DeviceInfo
name :: DeviceInfo -> String
I want to do something like
func :: IO () func = do ds <- mapM getDeviceInfo [0..10] mapM_ (print . name) ds
Is there a way to combine 'getDeviceInfo', 'name', and 'print' in one line?
I end up with either: join . fmap (mapM_ (print . name)) $ mapM getDeviceInfo [1..10] or mapM getDeviceInfo [1..10] >>= mapM_ (print . name) You can move the call to name into the mapM using (fmap name . getDeviceInfo) but I left them separate to match your code better.