* [Caml-list] [ANN] Second release of Sek
@ 2020-06-19 19:40 François Pottier
0 siblings, 0 replies; only message in thread
From: François Pottier @ 2020-06-19 19:40 UTC (permalink / raw)
To: caml users; +Cc: Arthur Charguéraud
Dear OCaml users,
We are pleased to announce the second release of Sek, an OCaml library that
offers an efficient implementation of sequences.
The library offers both ephemeral (mutable) sequences and persistent
(immutable) sequences, and offers constant-time conversions between these
It supports all of the standard operations on stacks, queues, deques (e.g.
push, pop at either end), catenable sequences (concat, split), and random
access sequences (get, set).
The new release makes a large number of additions to the library's API.
The most significant one is the introduction of very efficient iterators
over ephemeral and persistent sequences. A full list of changes appears
To install the new version of Sek, just type
opam update && opam install sek.20200618
The API documentation is online:
Feedback is welcome!
Arthur Charguéraud and François Pottier
* The time complexity of every operation is now documented as part of its
* New submodules `E.Iter` and `P.Iter`, which offer very efficient iterators
over ephemeral and persistent sequences.
* New functions
`take`, `drop`, `sub`,
`of_list_segment`, `of_list`, `of_seq_segment`, `of_seq`,
`find`, `find_opt`, `find_map`, `for_all`, `exists`, `mem`, `memq`,
`map`, `mapi`, `rev`, `zip`, `unzip`,
`filter`, `filter_map`, `partition`,
`iter2`, `iter2_segments`, `fold_left2`, `fold_right2`,
`map2`, `for_all2`, `exists2`, `equal`, `compare`,
`sort`, `stable_sort`, `uniq`, `merge`,
in ephemeral and persistent flavors.
* New functions `E.fill` and `E.blit`.
* New function `other` of type `side -> side`.
* New function `opposite` of type `direction -> direction`.
* New functor `SupplyDefault`, which allows supplying a default element
once and for all so as to obtain a simpler API. Unfortunately, this
requires choosing a fixed type of elements at the same time.
* New submodules `Emulated.Array` and `Emulated.List`, which can be used
as drop-in replacements for OCaml's standard `Array` and `List` modules.
* New submodule `Segment`, which offers a few facilities for iterating
over array segments.
* **Breaking change:** the default behavior of `E.copy` is now to produce a
disjoint sequence in time `O(n)`. The previous behavior, which exploits
sharing and produces a result in time `O(K)`, is obtained by invoking
``E.copy ~mode:`Share``. The two copying modes have the same observable
behavior; they differ only in their performance characteristics.
* **Breaking change:** the submodules `Queue` and `Stack` are renamed
`Emulated.Queue` and `Emulated.Stack`. This makes it easier to avoid
unintended shadowing of `Stdlib.Queue`, `Stdlib.Stack`, etc. It is now
safe to use `open Sek`.
* **Breaking change:** the functor `Make` now takes just one structure as a
parameter, instead of several structures. This is more pleasant and
make future evolution easier.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-06-19 19:40 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-19 19:40 [Caml-list] [ANN] Second release of Sek François Pottier
caml-list - the Caml user's mailing list
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://inbox.vuxu.org/caml-list
git clone --mirror https://inbox.ocaml.org/caml-list
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V1 caml-list caml-list/ http://inbox.vuxu.org/caml-list \
Example config snippet for mirrors.
Newsgroup available over NNTP:
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git