Pickling

Am I right in thinking that there aren't currently any standard libraries
for converting values to bitstreams and back, to be saved in files or
squirted over network sockets or whatever to be resurrected later or
elsewhere? I'd guess it would be hard to write, too - I've not noticed any
introspection. How do people normally efficiently pass complex Haskell
data structures to other co-operating Haskell processes? (I am thinking of
something a bit like Java's serialisation.)
-- Mark