Simon Cruanes
4f06874e39
more natural functors to adapt Set and Map
2013-08-28 14:57:28 +02:00
Simon Cruanes
fa18a7ba83
better pp_seq
2013-05-26 22:35:54 +02:00
Simon Cruanes
b946b7157b
optimized MList, with twice as fast insertion (on big tests);
...
see ./simple_bench.native 10_000_000. The optimization is based on increasing block size.
2013-03-11 00:54:28 +01:00
Simon Cruanes
0115102c2a
revert implementation of MList (new one is slower)
2013-03-10 19:02:30 +01:00
Simon Cruanes
b0428e3f05
re-implementation of the internal MList storage, with a kind
...
of 2-3 B-tree
2013-03-10 16:48:48 +01:00
Simon Cruanes
bd472ba2e0
small error in comment
2013-03-10 15:41:21 +01:00
Simon Cruanes
7eb4fb370b
Sequence.join combinator
2013-03-10 15:36:26 +01:00
Simon Cruanes
91a167a885
small API updates; Sequence.intersperse has a signature that is consistent
...
with the rest of the API, and combines well with |>
2013-03-10 15:26:50 +01:00
Simon Cruanes
e23e1f8da1
added alias 'flatten' for 'concat'
2013-03-08 18:09:22 +01:00
Simon Cruanes
9b6acc00ae
a bugfix in Sequence.product;
...
changed default block size of MList
2013-03-08 16:05:34 +01:00
Simon Cruanes
2aef4afa6a
sort, uniq, group and sort_uniq combinators implemented
2013-03-08 15:11:26 +01:00
Simon Cruanes
43f4f25ed7
some conversion functions that use Sequence.t2
2013-03-07 19:52:04 +01:00
Simon Cruanes
ba3564c2bb
infix operators in Sequence.Infix
2013-03-07 19:48:22 +01:00
Simon Cruanes
b109e99c00
Sequence.t2 type for efficient iteration on pairs of elements;
...
some combinators are adapted to Sequence.t2;
zip, unzip and zip_i to convert between t and t2
2013-03-07 19:42:10 +01:00
Simon Cruanes
b308a8ae87
added scan combinator
2013-03-07 19:30:57 +01:00
Simon Cruanes
836049b6f1
Sequence.to_stream implemented (O(n) memory and time)
2013-03-01 15:56:35 +01:00
Simon Cruanes
942023cdd7
bugfix in Sequence.MList.iter_rev
2013-02-27 21:10:09 +01:00
Simon Cruanes
2ba0cfe2f4
added some typeclasses in a submodule
2013-02-27 17:52:29 +01:00
Simon Cruanes
213def7aab
no need to reverse the MList to reverse a sequence
2013-02-25 10:35:14 +01:00
Simon Cruanes
df7ef45ad5
added Sequence.persistent function (copy sequence in memory);
...
implementation is done by unrolled linked list (also used for Sequence.rev and Sequence.to_array);
should be quite efficient in time and memory
2013-02-25 02:18:40 +01:00
Simon Cruanes
d64691f1b3
creation of the empty sequence
2013-02-18 17:23:56 +01:00
Simon Cruanes
099b0bbb8d
some combinators (inspired by Data.List in Haskell):
...
intersperse, product, unfoldr, max and min
2013-02-18 17:20:15 +01:00
Simon Cruanes
8c44f7c63e
added flatMap to the combinators
2013-02-18 17:04:24 +01:00
Simon Cruanes
55ff51f2cb
more combinators (iterate and forever);
...
some sequences of random elements
2013-02-15 17:35:05 +01:00
Simon Cruanes
45e331861d
more Sequence constructors and consumers
2013-02-15 17:20:33 +01:00
Simon Cruanes
af0c94dab4
functorial interface for Set too
2013-02-07 16:16:23 +01:00
Simon Cruanes
07cc9df645
offer two different functions for combining Map and Seq. Both build
...
an extended version of Map, with additional conversion functions relative to Sequence.
One can Adapt an already existing Map module, or Make an extended Map directly
2013-02-07 16:07:16 +01:00
Simon Cruanes
d706038ed5
use a hidden exception for interrupting computation, so that
...
user-defined functions/callbacks can use Exit without interfering
2013-02-06 18:15:24 +01:00
Simon Cruanes
2bf5b628ab
removed type-conversion submodules, now replaced by simple values.
...
For instance, Sequence.List.of_seq is now Sequence.to_list.
Conversion with Set now uses first-class modules to avoir functor hell
(not done on Map because of limitations in the type systems)
2013-02-06 14:53:33 +01:00
Simon Cruanes
438159aa90
length and is_empty functions for Sequence
2013-02-05 16:40:31 +01:00
Simon Cruanes
8ee07ed6a2
cycle and repeat operators directly in Sequence
2013-02-05 09:57:09 +01:00
Simon Cruanes
28332a45df
read sequence of chars from a channel
2013-02-04 23:29:18 +01:00
Simon Cruanes
ab74acf87a
more lightweight representation of sequences (no record, just a function)
2013-02-04 20:41:47 +01:00
Simon Cruanes
0b47a10e9b
more functions on Hashtbl;
...
functor for conversion between Map and Sequence
2013-01-29 14:40:11 +01:00
Simon Cruanes
087c38aa0c
more efficient Array.of_seq (only allocates one intermediate list, then reverse the array);
...
test of Array.to_seq and Sequence.append
2013-01-29 14:31:21 +01:00
Simon Cruanes
1e90120295
use a functor rather than first-class modules, for Set
2013-01-29 14:11:47 +01:00
Simon Cruanes
ee4ce9c9ba
generic sequence pretty-printing function
2013-01-29 11:13:46 +01:00
Simon Cruanes
fbc4946a99
add conversion from/to Stack, Queue, and add functions for Array and Ints;
...
also added more doc
2013-01-28 15:13:05 +01:00
Simon Cruanes
fa412b7ece
reformatted license prelude;
...
add a Set conversion module, using first class modules of ocaml>=3.12
2013-01-28 14:32:06 +01:00
Simon Cruanes
024e0115db
added license prelude to files; added Sequence.singleton builder
2013-01-28 01:41:43 +01:00
Simon Cruanes
64f7afb6a7
test Sequence.rev, since its implementation is non totally trivial
2013-01-28 01:18:10 +01:00
Simon Cruanes
0534a1fc2b
for_all, rev, iteri, exists added to sequence
2013-01-28 01:04:42 +01:00
Simon Cruanes
7dbd8d15e3
append/concat primitives
2013-01-28 00:55:57 +01:00
Simon Cruanes
57b778f6cc
iterate on integers
2013-01-28 00:34:54 +01:00
Simon Cruanes
e5039470e8
renamed Sequence.sequence to Sequence.t
2013-01-28 00:12:19 +01:00
Simon Cruanes
546a77ba8f
modules to convert lists and hashtables from/to sequences
2013-01-28 00:09:48 +01:00
Simon Cruanes
0f04cb8f5c
take, concat and drop functions
2013-01-27 23:37:47 +01:00
Simon Cruanes
4982630967
sequence type
2013-01-27 23:17:29 +01:00