package base
Full standard library replacement for OCaml
Install
Dune Dependency
Authors
Maintainers
Sources
v0.12.2.tar.gz
sha256=0aa8fa8778412c67c38d40e9859bfa5871c4f9c25991f09fea201ae6aaf1d0d9
md5=7150e848a730369a2549d01645fb6c72
doc/CHANGES.html
git version
Ordered_collection_common.get_pos_len
now returns anOr_error.t
- Added
Bool.Non_short_circuiting
. - Added
Float.square
. - Remove module
Or_error.Ok
. - module
Ref
doesn't implementContainer.S1
anymore. - Rename parameter of
Sequence.merge
fromcmp
tocompare
. - Added
Info.of_lazy_t
- Added
List.partition_result
function, to partition a list ofResult.t
values - Changed the signature of
equal
from'a t -> 'a t -> equal:('a -> 'a -> bool) -> bool
to('a -> 'a -> bool) -> 'a t -> 'a t -> bool
. - Optimized
Lazy.compare
to check physical equality before forcing the lazy values. - Deprecated
Args
in theApplicative
interface in favor of usingppx_let
. - Deprecated
Array.replace arr i ~f
in favor of usingarr.(i) <- (f (arr.(i)))
- Rename collection length parameter of
Ordered_collection_common
functions fromlength
tototal_length
, and add a unit argument toget_pos_len
andget_pos_len_exn
. - Removed functions that were deprecated in 2016 from the
Array
andSet
modules. - [Int.Hex.of_string] and friends no longer silently ignore a suffix of non-hexadecimal garbage.
- Added
?backtrace
argument toOr_error.of_exn_result
. List.zip
now returns aList.Or_unequal_lengths.t
instead of anoption
.- Remove functions from the
Sequence
module that were deprecated in 2015. Container.Make
andContainer.Make0
now require callers to either provide a customlength
function or request that one be derived fromfold
.Container.to_array
's signature is also changed to acceptlength
anditer
instead offold
.
v0.11
- Deprecated
Not_found
, people who need it can useCaml.Not_found
, but its use isn't recommended. - Added the
Sexp.Not_found_s
exception which will replaceCaml.Not_found
as the default exception in a future release. - Document that
Array.find_exn
,Array.find_map_exn
, andArray.findi_exn
may throwCaml.Not_found
orNot_found_s
. - Document that
Hashtbl.find_exn
may throwCaml.Not_found
orNot_found_s
. - Document that
List.find_exn
, andList.find_map_exn
may throwCaml.Not_found
orNot_found_s
. - Document that
List.find_exn
may throwCaml.Not_found
orNot_found_s
. - Document that
String.lsplit2_exn
, andString.rsplit2_exn
may throwCaml.Not_found
orNot_found_s
. - Added
Sys.backend_type
. - Removed unnecessary unit argument from
Hashtbl.create
. - Removed deprecated operations from
Hashtbl
. - Removed
Hashable.t
constructors fromHashtbl
andHash_set
, instead favoring the first-class module constructors. - Removed
Container
operations fromEither.First
andEither.Second
. - Changed the type of
fold_until
in theContainer
interfaces. Rather than returning aFinished_or_stopped_early.t
(which has also been removed), the function now takes afinish
function that will be applied the result iff
never returned aStop _
. - Removed the
String_dict
module. - Added a
Queue
module that is backed by anOption_array
for efficient and (non-allocating) implementations of most operations. - Added a
Poly
submodule toMap
andSet
that exposes constructors that use polymorphic compare. - Deprecated
all_ignore
in theMonad
andApplicative
interfaces in favor ofall_unit
. - Deprecated
Array.replace_all
in favor ofArray.map_inplace
, which is the standard name for that sort of operation within Base. - Document that
List.find_exn
, andList.find_map_exn
may throwCaml.Not_found
orNot_found_s
. - Make
~compare
a required argument toList.dedup_and_sort
,List.dedup
,List.find_a_dup
,List.contains_dup
, andList.find_all_dups
. - Removed
List.exn_if_dup
. It is still available in core_kernel. - Removed "normalized" index operation
List.slice
. It is still available in core_kernel. - Remove "normalized" index operations from
Array
, which inclucedArray.normalize
,Array.slice
,Array.nget
andArray.nset
. These operations are still available in core_kernel. - Added
Uniform_array
module that is just like anArray
except guarantees that the representation array is not tagged withDouble_array_tag
, the tag for float arrays. - Added
Option_array
module that allows for a compact representation of'a optoin array
, which avoids allocating heap objects representingSome a
. - Remove "normalized" index operations from
String
, which inclucedString.normalize
,String.slice
,String.nget
andString.nset
. These operations are still available in core_kernel. - Added missing conversions between
Int63
and other integer types, specifically, the versions that return options. - Added truncating versions of integer conversions, with a suffix of
_trunc
. These allow fast conversions via bit arithmetic without any conditional failure; excess bits beyond the width of the output type are simply dropped. - Added
Sequence.group
, similar toList.group
. - Reimplemented
String.Caseless.compare
so that it does not allocate. - Added
String.is_substring_at string ~pos ~substring
. Used it as back-end foris_suffix
andis_prefix
. - Moved all remaining
Replace_polymorphic_compare
submodules from Base types and consolidated them in one place withinImport0
. - Removed
(<=.)
and its friends. - Added
Sys.argv
. - Added a infix exponentation operator for int.
- Added a
Formatter
module to reexport theFormat.formatter
type and updated the deprecation message forFormat
.
v0.10
(Changes that can break existing programs are marked with a "*")
Bugfixes
- Generalized the type of
Printf.ifprintf
to reflect OCaml's stdlib. - Made
Sequence.fold_m
anditer_m
respectSkip
steps and explicitly bind when they occur. - Changed
Float.is_negative
andis_non_positive
onNaN
to returnfalse
rather thantrue
. - Fixed the
Validate.protect
function, which was mistakenly raising exceptions.
API changes
- Renamed
Map.add
asset
, and deprecatedadd
. A later feature will addadd
andadd_exn
in the style ofHashtbl
. - A different hash function is used to implement [Base.Int.hash]. The old implementation was [Int.abs] but collision resistance is not enough, we want avalanching as well. The new function is an adaptation of one of the Thomas Wang hash functions to OCaml (63-bit integers), which results in reasonably good avalanching.
- Made
open Base
expose infix float operators (+., -., etc.).
- Renamed
List.dedup
toList.dedup_and_sort
, to better reflect its existing behavior.
- Added
Hashtbl.find_multi
andMap.find_multi
. - Added function
Map.of_increasing_sequence
for constructing aMap.t
from an orderedSequence.t
- Added function
List.chunks_of : 'a t -> length : int -> 'a t t
, for breaking a list into chunks of equal length. - Add to module
Random
numeric functions that take upper and lower inclusive bounds, e.g.Random.int_incl : int -> int -> int
.
- Replaced
Exn.Never_elide_backtrace
withBacktrace.elide
, aref
cell that determines whetherBacktrace.to_string
andBacktrace.sexp_of_t
elide backtraces.
- Exposed infix operator
Base.( @@ )
. - Exposed modules
Base.Continue_or_stop
andFinished_or_stopped_early
, used with theContainer.fold_until
function. - Exposed module types Base.T, T1, T2, and T3.
- Added
Sequence.Expert
functionsnext_step
anddelayed_fold_step
, for clients that want to explicitly handleSkip
steps. - Added
Bytes
module. This includes the submodulesFrom_string
andTo_string
with blit functions. N.B. the signature (and name) ofunsafe_to_string
andunsafe_of_string
are different from the one in the standard library (and hopefully more explicit). - Add bytes functions to
Buffer
. Also addedBuffer.content_bytes
, the analog ofcontents
but that returnsbytes
rather thanstring
.
- Enabled
-safe-string
.
- Added function
Int63.of_int32
, which was missing.
- Deprecated a number of
String
mutating functions.
- Added module
Obj_array
, moved in fromCore_kernel
.
- In module type
Hashtbl.Accessors
, removed deprecated functions, moving them into a new module type,Deprecated
.
- Exported
sexp_*
types that are recognized byppx_sexp_*
converters:sexp_array
,sexp_list
,sexp_opaque
,sexp_option
.
- Reworked the
Or_error
module's interface, moving theContainer.S
interface to anOk
submodule, and adding functionsis_ok
,is_error
, andok
to more closely resemble the interface of theResult
module.
- Removed
Int.O.of_int_exn
. - Exposed
Base.force
function. - Changed the deprecation warning for
mod
to recommend( % )
rather thanCaml.( mod )
.
Performance related changes
- Optimized
List.compare
, removing its closure allocation. - Optimized
String.mem
to not allocate. - Optimized
Float.is_negative
,is_non_negative
,is_positive
, andis_non_positive
to avoid some boxing. - Changed
Hashtbl.merge
to relax its equality check on the input tables'Hashable.t
records, checking physical equality componentwise if the records aren't physically equal. - Added
Result.combine_errors
, similar toOr_error.combine_errors
, with a slightly different type. - Added
Result.combine_errors_unit
, similar toOr_error.combine_errors_unit
. - Optimized the
With_return.return
type by adding the[@@unboxed]
attribute. - Improved a number of deprecation warnings.
v0.9
Initial release.
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page