version 0.5

This commit is contained in:
Simon Cruanes 2014-07-07 18:13:36 +02:00
parent fea71526b0
commit d5b9674124
5 changed files with 79 additions and 55 deletions

View file

@ -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

65
CHANGELOG.md Normal file
View file

@ -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

View file

@ -49,4 +49,10 @@ examples:
push_doc: all doc push_doc: all doc
scp -r sequence.docdir/* cedeela.fr:~/simon/root/software/sequence/ 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

2
_oasis
View file

@ -1,6 +1,6 @@
OASISFormat: 0.4 OASISFormat: 0.4
Name: sequence Name: sequence
Version: 0.4.1 Version: 0.5
Homepage: https://github.com/c-cube/sequence Homepage: https://github.com/c-cube/sequence
Authors: Simon Cruanes Authors: Simon Cruanes
License: BSD-2-clause License: BSD-2-clause

View file

@ -139,11 +139,11 @@ val exists : ('a -> bool) -> 'a t -> bool
val mem : ?eq:('a -> 'a -> bool) -> 'a -> 'a t -> bool val mem : ?eq:('a -> 'a -> bool) -> 'a -> 'a t -> bool
(** Is the value a member of the sequence? (** Is the value a member of the sequence?
@param eq the equality predicate to use (default [(=)]) @param eq the equality predicate to use (default [(=)])
@since NEXT_VERSION *) @since 0.5 *)
val find : ('a -> 'b option) -> 'a t -> 'b option val find : ('a -> 'b option) -> 'a t -> 'b option
(** Find the first element on which the function doesn't return [None] (** Find the first element on which the function doesn't return [None]
@since NEXT_VERSION *) @since 0.5 *)
val length : 'a t -> int val length : 'a t -> int
(** How long is the sequence? Forces the sequence. *) (** 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 val flat_map : ('a -> 'b t) -> 'a t -> 'b t
(** Alias to {!flatMap} with a more explicit name (** Alias to {!flatMap} with a more explicit name
@since NEXT_VERSION *) @since 0.5 *)
val fmap : ('a -> 'b option) -> 'a t -> 'b t val fmap : ('a -> 'b option) -> 'a t -> 'b t
(** Specialized version of {!flatMap} for options. *) (** Specialized version of {!flatMap} for options. *)
val filter_map : ('a -> 'b option) -> 'a t -> 'b t val filter_map : ('a -> 'b option) -> 'a t -> 'b t
(** Alias to {!fmap} with a more explicit name (** Alias to {!fmap} with a more explicit name
@since NEXT_VERSION *) @since 0.5 *)
val intersperse : 'a -> 'a t -> 'a t val intersperse : 'a -> 'a t -> 'a t
(** Insert the single element between every element of the sequence *) (** 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 val product2 : 'a t -> 'b t -> ('a, 'b) t2
(** Binary version of {!product}. Same requirements. (** 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 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 (** [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 val concat_str : string t -> string
(** Concatenate strings together, eagerly. (** Concatenate strings together, eagerly.
Also see {!intersperse} to add a separator. Also see {!intersperse} to add a separator.
@since NEXT_VERSION *) @since 0.5 *)
exception OneShotSequence exception OneShotSequence
(** Raised when the user tries to iterate several times on (** Raised when the user tries to iterate several times on