caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "François Pottier" <francois.pottier@inria.fr>
To: caml users <caml-list@inria.fr>
Cc: "Arthur Charguéraud" <arthur@chargueraud.org>
Subject: [Caml-list] [ANN] Second release of Sek
Date: Fri, 19 Jun 2020 21:40:25 +0200	[thread overview]
Message-ID: <7f2d7be6-2938-f1d0-dcf0-eb4817273bb0@inria.fr> (raw)


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
flavors.

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
below.

To install the new version of Sek, just type

   opam update && opam install sek.20200618

The API documentation is online:

   http://cambium.inria.fr/~fpottier/sek/doc/sek/Sek/

Feedback is welcome!

--
Arthur Charguéraud and François Pottier

## 2020/06/18

* The time complexity of every operation is now documented as part of its
   specification.

* New submodules `E.Iter` and `P.Iter`, which offer very efficient iterators
   over ephemeral and persistent sequences.

* New functions
   `take`, `drop`, `sub`,
   `iter_segments`,
   `to_seq`,
   `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`,
   `flatten`, `flatten_map`,
   `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 
should
   make future evolution easier.

                 reply	other threads:[~2020-06-19 19:40 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7f2d7be6-2938-f1d0-dcf0-eb4817273bb0@inria.fr \
    --to=francois.pottier@inria.fr \
    --cc=arthur@chargueraud.org \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).