In people's responses to my serialization questions, I've seen them using $.

I didn't know what it was so I've looked it up.  Can someone please confirm my understanding of what it does, please?

According to http://en.wikibooks.org/wiki/Haskell/Practical_monads, after the second code sample in the "Return Values" section, it seems to suggest that $ is only used to avoid using so many brackets.  Which seems to make sense, but looking at it's definition in Prelude I really can't see why it's useful.

Yitz gave me the code;

fmap (runGet $ readNames n) $ L.hGetContents h

So can I rewrite this without the $ like this?

fmap (runGet (readNames n)) (L.hGetContents h)

Is there any additional benefit to using $ than just not having to write as many brackets?

Thanks,

Tom