diff --git a/CHANGELOG b/CHANGELOG deleted file mode 100644 index c2bdccb..0000000 --- a/CHANGELOG +++ /dev/null @@ -1,47 +0,0 @@ -# Changelog - -## 0.4.1 - -- persistent_lazy -- use bin_annot - -## 0.4 - -- API change for persistent -- more efficient implementation for persistent -- remove TypeClass -- API change for min/max (in case the sequence is empty) -- conversion with Gen -- use Oasis - -## 0.3.7 - -- decreasing int range -- printing functions - -## 0.3.6.1 - -- documentation -- bugfixes - -## 0.3.6 - -- fmap -- functors to adapt Set and Map - -## 0.3.5 - -- tests and benchmarks -- join combinator -- optimization for Sequence.persistent - -## 0.3.4 - -- sort, uniq, group and sort_uniq combinators implemented -- some conversion functions that use Sequence.t2 -- infix operators in Sequence.Infix -- 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 -- added scan combinator - diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..08c0e5a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,65 @@ +# Changelog + +## 0.5 + +- conversion with `klist` +- add monadic, choice and applicative infix operators and `>|=` +- add several functions: + * `product2` + * `find`, `mem` + * `doubleton`, `cons`, `snoc` + * `drop_while`, `take_while`... + * `concat_str` +- aliases to existing functions +- use `delimcc` in a new module, `SequenceInvert`, in order to reverse the + control flow (here with conversion to Gen) +- fix examples, tests and doc (about `product`) +- reading benchmark for persistent sequences. +- replace `Bench` with `Benchmark` + +## 0.4.1 + +- `persistent_lazy` +- use bin_annot + +## 0.4 + +- API change for `persistent` +- more efficient implementation for `persistent` +- remove `TypeClass` +- API change for `min`/`max` (in case the sequence is empty) +- conversion with `Gen` +- use Oasis + +## 0.3.7 + +- decreasing int range +- printing functions + +## 0.3.6.1 + +- documentation +- bugfixes + +## 0.3.6 + +- `fmap` +- functors to adapt `Set` and `Map` + +## 0.3.5 + +- tests and benchmarks +- `join` combinator +- optimization for `Sequence.persistent` + +## 0.3.4 + +- `sort`, `uniq`, `group` and `sort_uniq` combinators implemented +- some conversion functions that use `Sequence.t2` +- infix operators in `Sequence.Infix` +- `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` +- added `scan` combinator + +note: git log --no-merges previous_version..HEAD --pretty=%s diff --git a/Makefile b/Makefile index 8b51c6e..8a1e499 100644 --- a/Makefile +++ b/Makefile @@ -49,4 +49,10 @@ examples: push_doc: all doc scp -r sequence.docdir/* cedeela.fr:~/simon/root/software/sequence/ -.PHONY: benchs tests examples +VERSION=$(shell awk '/Version:/ {print $$2}' _oasis) + +update_next_tag: + @echo "update version to $(VERSION)..." + sed -i "s/NEXT_VERSION/$(VERSION)/g" *.ml *.mli + +.PHONY: benchs tests examples update_next_tag push_doc diff --git a/_oasis b/_oasis index ed0be89..3e48dbe 100644 --- a/_oasis +++ b/_oasis @@ -1,6 +1,6 @@ OASISFormat: 0.4 Name: sequence -Version: 0.4.1 +Version: 0.5 Homepage: https://github.com/c-cube/sequence Authors: Simon Cruanes License: BSD-2-clause diff --git a/sequence.mli b/sequence.mli index 9f4f260..e2691a9 100644 --- a/sequence.mli +++ b/sequence.mli @@ -139,11 +139,11 @@ val exists : ('a -> bool) -> 'a t -> bool val mem : ?eq:('a -> 'a -> bool) -> 'a -> 'a t -> bool (** Is the value a member of the sequence? @param eq the equality predicate to use (default [(=)]) - @since NEXT_VERSION *) + @since 0.5 *) val find : ('a -> 'b option) -> 'a t -> 'b option (** Find the first element on which the function doesn't return [None] - @since NEXT_VERSION *) + @since 0.5 *) val length : 'a t -> int (** How long is the sequence? Forces the sequence. *) @@ -172,14 +172,14 @@ val flatMap : ('a -> 'b t) -> 'a t -> 'b t val flat_map : ('a -> 'b t) -> 'a t -> 'b t (** Alias to {!flatMap} with a more explicit name - @since NEXT_VERSION *) + @since 0.5 *) val fmap : ('a -> 'b option) -> 'a t -> 'b t (** Specialized version of {!flatMap} for options. *) val filter_map : ('a -> 'b option) -> 'a t -> 'b t (** Alias to {!fmap} with a more explicit name - @since NEXT_VERSION *) + @since 0.5 *) val intersperse : 'a -> 'a t -> 'a t (** Insert the single element between every element of the sequence *) @@ -228,7 +228,7 @@ val product : 'a t -> 'b t -> ('a * 'b) t val product2 : 'a t -> 'b t -> ('a, 'b) t2 (** Binary version of {!product}. Same requirements. - @since NEXT_VERSION *) + @since 0.5 *) val join : join_row:('a -> 'b -> 'c option) -> 'a t -> 'b t -> 'c t (** [join ~join_row a b] combines every element of [a] with every @@ -369,7 +369,7 @@ val to_str : char t -> string val concat_str : string t -> string (** Concatenate strings together, eagerly. Also see {!intersperse} to add a separator. - @since NEXT_VERSION *) + @since 0.5 *) exception OneShotSequence (** Raised when the user tries to iterate several times on