Pickler combinators

The tedium of writing pickling and unpickling functions by hand is relieved using a combinator library similar in spirit to the well-known parser combinators. Picklers for primitive types are combined to support tupling, alternation, recursion, and structure sharing. Code is presented in Haskell; an alternative implementation in ML is discussed.

[1]  Lawrence Charles Paulson,et al.  ML for the working programmer , 1991 .

[2]  Ian H. Witten,et al.  Text Compression , 1990, 125 Problems in Text Algorithms.

[3]  Nick Benton,et al.  Under Consideration for Publication in J. Functional Programming Embedded Interpreters , 2022 .

[4]  Nick Benton,et al.  Adventures in interoperability: the SML.NET experience , 2004, PPDP '04.

[5]  Philip Wadler,et al.  Packrat parsing:: simple, powerful, lazy, linear time, functional pearl , 2002, ICFP '02.

[6]  Ralf Hinze Polytypic Values Possess Polykinded Types , 2000, MPC.

[7]  Graham Hutton,et al.  Monadic parsing in Haskell , 1998, Journal of Functional Programming.

[8]  Ralf Hinze,et al.  Polytypic values possess polykinded types , 2000, Sci. Comput. Program..

[9]  Richard S. Bird Using circular programs to eliminate multiple traversals of data , 2004, Acta Informatica.

[10]  Johan Jeuring,et al.  Polytypic data conversion programs , 2002, Sci. Comput. Program..

[11]  Norman Ramsey,et al.  Embedding an interpreted language using higher-order functions and types , 2003, IVME '03.

[12]  Martin Elsman Type-specialized serialization with sharing , 2005, Trends in Functional Programming.

[13]  Chris Reade,et al.  ML for the Working Programmer (2nd edition) by L. C. Paulson, Cambridge University Press, 1996. A Practical Course in Functional Programming Using Standard ML by R. Bosworth, McGraw Hill, 1996. , 1997, Journal of Functional Programming.

[14]  Robert Harper,et al.  Compiling polymorphism using intensional type analysis , 1995, POPL '95.