circular alternatives and similar packages
Based on the "Data Structures" category.
Alternatively, view circular alternatives based on common mentions on social networks and blogs.
-
Agda
Agda is a dependently typed programming language / interactive theorem prover. -
vinyl
Extensible Records for Haskell. Pull requests welcome! Come visit us on #vinyl on freenode. -
repa-eval
High performance, regular, shape polymorphic parallel arrays. -
repa-convert
High performance, regular, shape polymorphic parallel arrays. -
repa-scalar
High performance, regular, shape polymorphic parallel arrays. -
repa-array
High performance, regular, shape polymorphic parallel arrays. -
parameterized-utils
A set of utilities for using indexed types including containers, equality, and comparison. -
ethereum-client-haskell
A Haskell version of an Ethereum client -
type-level-sets
Type-level sets for Haskell (with value-level counterparts and various operations) -
justified-containers
Standard containers, with keys that carry type-level proofs of their own presence. -
bytestring-trie
An efficient finite map from (byte)strings to values. -
ixset-typed
More strongly typed variant of the ixset Haskell package -
knit
Ties the knot on data structures that reference each other by unique keys -
nonempty-containers
Efficient non-empty variants of containers data types, with full API -
eliminators
Dependently typed elimination functions using singletons -
claferIG
Support for reasoning on Clafer models by instantiation and counter example generation. -
map-syntax
Syntax sugar and explicit semantics for statically defined maps -
igraph
Incomplete Haskell bindings to the igraph library (which is written in C) -
selections
Haskell Package for operating with selections over an underlying functor
ONLYOFFICE Docs — document collaboration in your environment
Do you think we are missing an alternative of circular or a related project?
README
Circular
Circular fixed-sized stacks.
Circular stacks with fxed maximum size are just normal vectors with a pointer to the last element. They are useful because
- memory usage is constant
- they are fast, especially when summary statistics need to be
computed across the stack (use
unsafePush
, if possible) - they can be saved, and restored using JSON format
When the stack is full, new, pushed elements replace the oldest (deepest) elements on the stack. Complex circular behavior can arise when pushes and pops are mixed. QuickCheck and unit tests with HSpec give promising results — have a look yourself.
I use circular stacks, for example, as the data type for traces of Markov chains.
Circular
is actively developed and functions may be removed, renamed, or
changed. New ideas are welcome!