data-structure-inferrer alternatives and similar packages
Based on the "data" category.
Alternatively, view data-structure-inferrer alternatives based on common mentions on social networks and blogs.
-
proto-lens
API for protocol buffers using modern Haskell language and library patterns. -
microlens
A lightweight (but compatible with ‘lens’) lenses library -
msgpack
Haskell implementation of MessagePack / msgpack.org[Haskell] -
extensible
Extensible records, variants, structs, effects, tangles -
file-embed
Use Template Haskell to embed file contents directly. -
fclabels
First class composable record labels for Haskell. -
base64-bytestring
Fast base64 encoding and decoding for Haskell. -
monoid-extras
Miscellaneous constructions on monoids -
asn1-encoding
ASN1 Raw/BER/DER/CER reader/writer in haskell -
data-category
Library of categories, with categorical constructions on them -
interpolatedstring-perl6
QuasiQuoter for Perl6-style multi-line interpolated strings with q, qq and qc support. -
buffer-builder
Haskell library for efficiently building up buffers -
language-hcl
language-hcl contains HCL (Hashicorp Configuration Language) parsers and pretty-printers for the Haskell programming language -
cassava-conduit
Conduit interface for cassava [Haskell] -
histogram-fill
Filling and manupulation with histograms -
finite-typelits
A type inhabited by finitely many values, indexed by type-level naturals. -
phone-numbers
Incomplete bindings to libphonenumber for Haskell -
data-object-yaml
Serialize data to and from Yaml files -
attoparsec-iteratee
An adapter to convert attoparsec Parsers into blazing-fast Iteratees -
filesystem-trees
Traverse and manipulate directories as lazy rose trees -
order-statistic-tree
Order statistic tree in Haskell -
dwarf-el
Haskell library for parsing DWARF object format -
syb-with-class
Fork of http://patch-tag.com/r/Saizan/syb-with-class -
currency
Types representing standard and non-standard currencies -
range-set-list
Memory efficient sets with continuous ranges of elements. List based implementation. -
schedule-planner
Calculate an ideal schedule layout from a set of timeslots -
type-iso
Expresses isomorphic and injective relations between types. -
unamb-custom
Functional concurrency with unambiguous choice, using a custom scheduler. -
procrastinating-variable
Haskell values that cannot be evaluated immediately. -
resource-pool-catchio
A high-performance striped resource pooling implementation for Haskell
Collect and Analyze Billions of Data Points in Real Time
Do you think we are missing an alternative of data-structure-inferrer or a related project?
README
About the project
Link to thesis: http://s3.amazonaws.com/alistra-thesis/current/thesis.pdf
This project is meant to be a compiler feature/wrapper that analyzes your code and chooses the best data structure depending on your source code. It analyzes the functions used on a wildcard data structure and chooses the type of structure that minimizes the time complexity on compile time.
It can also work as a standalone source code analyzer. It recommends you the best data structure and advises which operation to cut out, to get a better performance.
This project is meant to act as a standard library of data structures, but the programmer doesn't have to know which structures are available and which ones match to the current task. The program simply does that for the programmer.
It supports C language and will hopefully support some other languages too.
Usage
dsinf [-OPT1 [VAL1] [-OPT2 [VAL2] [...]] [-- [CCOPTS]]
-o file --output=file Output file
-r --recommend Give recommendations about the data structure in the supplied code (default)
-a --advice Give advice about the data structure in the supplied code
-c --compile Compile the code with recommended structure linked
-i --inline Inline the code implementing the recommended structure in the supplied code
-v --verbose Enable verbose messages
-h --help Show help
CCOPTS are passed directly to the compiler
Example
For the following C file:
//example.c
typedef int dstype;
#include <ds.h>
int main()
{
ds d1;
for(int i = 0; i < 20; i++)
{
insert_d(d1, i);
printf("%d\n", search_d(d1, i));
printf("%d\n", search_d(d1, 20 + i));
update_d(d1, i, 2*i);
}
printf("%d\n", max_d(d1));
}
you'll invoke:
dsinf -c example.c
and it will automatically compile the program using the matching library with the data structure implementation (here - red-black trees with maximal element cache).