This is genericserialize, a library of functions using the "Scrap your boilerplate" framework to serialize arbitrary data. Basic usage: *Data.Generics.Serialization.SExp> buildList (sexpSerialize (True,False)) "(~l,~r #t #f)" *Data.Generics.Serialization.SExp> buildList (sexpSerialize [True,False]) "(#t #f)" *Data.Generics.Serialization.SExp> buildList (sexpSerialize (Just "help")) "(Just \"help\")" *Data.Generics.Serialization.SExp> withList (sexpDeserialize) "(#t #f)" :: Maybe [Bool] Just [True,False] *Data.Generics.Serialization.SExp> withList (sexpDeserialize) "(Just \"f\\oo\")" :: Maybe (Maybe Bool) Nothing *Data.Generics.Serialization.SExp> withList (sexpDeserialize) "(Just \"f\\oo\")" :: Maybe (Maybe String) Just (Just "foo") *Data.Generics.Serialization.SExp>