Commit graph

72 commits

Author SHA1 Message Date
Simon Cruanes
c79fa08b52 options: to_opt/of_opt/head/head_exn 2014-07-17 18:06:51 +02:00
Simon Cruanes
fea71526b0 of_list/to_list in Map/Set adapters 2014-07-07 18:14:16 +02:00
Simon Cruanes
4475d52b0f code cleaning;
exception raised in of_in_channel upon second iteration
2014-07-07 18:14:16 +02:00
Simon Cruanes
77d74953fd sequence.concat_str 2014-07-07 18:14:16 +02:00
Simon Cruanes
e0a95a3c31 cons, snoc, take_while, drop_while, doubleton 2014-07-07 17:12:49 +02:00
Simon Cruanes
75c87b0507 conversion with klist 2014-07-07 14:44:40 +02:00
Simon Cruanes
abe4ba2aaf applicative and choice infix operators 2014-07-07 14:25:37 +02:00
Simon Cruanes
ed5a602f4e add monadic operators and >|= 2014-07-07 13:57:20 +02:00
Simon Cruanes
a40866e9ec add several functions: product2, find, mem;
fix doc error on product
2014-07-01 16:00:09 +02:00
Simon Cruanes
54025273dd remove trailing whitespace 2014-07-01 15:54:15 +02:00
Simon Cruanes
632a820b1d aliases to existing functions 2014-07-01 15:54:00 +02:00
Simon Cruanes
3d61de614e apparently drup doesn't like polymorphic variants 2014-05-19 14:58:11 +02:00
Simon Cruanes
6ff605ac04 Sequence.persistent_lazy added, for caching without upfront cost 2014-05-19 14:51:12 +02:00
Simon Cruanes
281032c61f conversion with Gen 2014-04-16 17:57:11 +02:00
Simon Cruanes
93b6a18c41 cleanup of Infix (removed some operators);
remove TypeClass
2014-04-16 17:56:54 +02:00
Simon Cruanes
2d380a48ca change the interface of min/max so that they return an option
in case the sequence is empty
2014-04-16 17:39:32 +02:00
Simon Cruanes
a5385ce649 API change for Sequence.persistent: no need to
provide a block size, the unrolled list manages it (doubling block size);
new implementation for persistent is more efficient.
2014-02-27 11:51:57 +01:00
Simon Cruanes
a3ff8ee854 added a benchmark for persistent; moved all benchs to bench/ 2014-02-27 11:06:07 +01:00
Simon Cruanes
b1e5176177 printing functions 2013-11-18 15:17:22 +01:00
Simon Cruanes
61a4f64e75 decreasing int range operator 2013-11-18 15:10:07 +01:00
Simon Cruanes
85b063737f allow to specify the blocksize in persistent 2013-10-20 22:02:19 +02:00
Simon Cruanes
0e16d544d5 replace array functions by loops 2013-10-20 21:17:09 +02:00
Simon Cruanes
049fe898ce bugfix in Sequence.take 2013-10-03 21:54:51 +02:00
Simon Cruanes
12c0c5a6f5 fmap function 2013-08-28 15:01:09 +02:00
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