
I know this has been written about way too much, but I was wondering what people thought about using 'liftM f' as opposed to '>>= return . f'. I would probably have written Andrew's code using liftM, but I don't know if one is necessarily better than the other. Does anyone have strong thoughts on this?
so, using liftM: (number g >>= return . show) becomes (liftM show (number g)) or (show `liftM` number g) but it's important not to get too carried away with abstractions - this example requires a bit of a trawl around the library documentation for someone not familiar with liftM. Personally, unless I was writing fragments like this a lot, I'd just write it as (do r <- number g; return (show r)) Each to his own I suppose. Cheers, Simon
participants (1)
-
Simon Marlow