RW.Base
This package contains an implementation of a compact data term
representation which can be used to write data to files and read data
from files faster compared to the standard instances of
Show and Read. Furthermore, the accompanying
package rw-data-generator contains a tool
curry-rw-data to generate read and write operations for all
types defined in a given module. For this purpose, the tool generates
instances of the class ReadWrite (see module
RW.Base) for the given type declarations.
To write and read compact data to and from files, the module
RW.Base provides operations, like
readDataFile :: ReadWrite a => FilePath -> IO (Maybe a)
writeDataFile :: ReadWrite a => FilePath -> a -> IO ()
to read and write compact data.
If the module Mod contains definitions of data types,
the command (see package rw-data-generator to generate the
executable)
> curry-rw-data Mod
generates a new Curry module ModRW containing instance
definition of class ReadWrite for all types defined in
Mod. In order to store or read these data in a compact
format, one has to import the module Mod,
ModRW and RW.Base in order to use the
operations writeDataFile or readDataFile.
The ideas and description of the compact data representation are described in the bachelor’s thesis
Compact Representation of Data Terms (in German, by Lasse Züngel, CAU Kiel, March 2024)