package sek
An efficient implementation of ephemeral and persistent sequences
Install
Dune Dependency
Authors
Maintainers
Sources
archive.tar.gz
md5=9f6928616982931247b976d6ffe26b21
sha512=26e61a6d4a985ffba16f21933c7702b246f41e7f9ad4768fecb8235fd95c26a02ad19708de9b2fcab5ef58c3796d41877df3fe050ba44aa77c615d42db8f8791
doc/CHANGES.html
Changes
2020/10/12
- In principle, when the parameter
check_iterator_validity
istrue
, a concurrent modification (that is, a modification of an ephemeral sequence that takes place while an iteration on this sequence is ongoing) must be detected bySek
, giving rise to an exception. In several functions, this was not the case. Fixed. (These functions areE.to_seq
,E.to_seqi
,E.map
,E.mapi
,E.iter2_segments
,E.iter2
,E.map2
,E.fold_left2
,E.fold_right2
,E.find2
,E.exists2
,E.for_all2
,E.equal
,E.compare
,E.merge
.)
2020/06/18
- The time complexity of every operation is now documented as part of its specification.
- New submodules
E.Iter
andP.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
andE.blit
. - New function
other
of typeside -> side
. - New function
opposite
of typedirection -> 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
andEmulated.List
, which can be used as drop-in replacements for OCaml's standardArray
andList
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 timeO(n)
. The previous behavior, which exploits sharing and produces a result in timeO(K)
, is obtained by invokingE.copy ~mode:`Share
. The two copying modes have the same observable behavior; they differ only in their performance characteristics. - Breaking change: the submodules
Queue
andStack
are renamedEmulated.Queue
andEmulated.Stack
. This makes it easier to avoid unintended shadowing ofStdlib.Queue
,Stdlib.Stack
, etc. It is now safe to useopen 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.
2020/04/03
- Initial release of the library.
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page