andreymulik / sdp

Simple Data Processing
BSD 3-Clause "New" or "Revised" License
0 stars 2 forks source link
data-structures extensible haskell haskell-library namespace sort

Simple Data Processing

It is a library for simple data processing. sdp is inspired by array, vector, bytestring, containers and repa. sdp is focused on efficiency, openness and simplicity.

Motivation

Originally sdp was created as array replacement. Now its main purpose was to provide the most comfortable interface for working with various data structures: eliminate name conflicts with other libraries and between them, simplify their interaction, make code even more versatile and reusable.

Structures

All predefined structures are based on pseudo-primitive types SArray#, SBytes#, STArray#, STBytes#, MIOArray#, MIOBytes# that encapsulate real primitives with correct size and offset.

sdp uses templates to define more complex structures:

Based on pseudo-primitives and templates, the following are defined:

Classes

sdp generalize the most popular operations on linear (list-like) and associative data structures including selection, splitting and sorting. With sdp list functions aren't overlap their counterparts for other structures.

Versions

sdp follow Haskell Package Versioning Policy. To simplify the search for extensions, I also recommend the following rules:

Using the SDP category

The SDP category is intended for sdp classes and primitives, as for structures whose names are already taken in the Data category. It shouldn't be used instead of System, Control, Foreign, etc.

Contributing

For details of the process for submitting pull requests, please read CONTRIBUTING.md.

License

sdp is FOSS (free and open source software), you can redistribute it and/or modify it under the terms of the BSD3 license. sdp is distributed in the hope that it will be useful, but without any warranty, without even the implied warranty of merchantability or fitness for a particular purpose. See the LICENSE file for more details.