dependencies:
|
[Dependency "base" [[VGte "3.2.0",VLt "4.0.0"]],Dependency "containers" [[VGte "3.0.0",VLt "4.0.0"]],Dependency "read-legacy" [[VGte "3.0.0",VLt "4.0.0"]],Dependency "process" [[VGte "3.0.0",VLt "4.0.0"]],Dependency "profiling" [[VGte "3.0.0",VLt "4.0.0"]],Dependency "directory" [[VGte "3.0.0",VLt "4.0.0"]],Dependency "string-trie" [[VLt "1.0.0"]]]
|
documentation:
|
rw-data
=======
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.
Usage
-----
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`.
Documentation
-------------
The ideas and description of the compact data representation
are described in the bachelor's thesis
[Compact Representation of Data Terms](https://www.michaelhanus.de/lehre/abschlussarbeiten/bsc/Zuengel_Lasse.pdf)
(in German, by Lasse Züngel, CAU Kiel, March 2024)
|