Page
Library
Module
Module type
Parameter
Class
Class type
Source
Containers_cbor
modulepopcount
operationCCBV:
bytes
underneath, not an array of integerscontainers_testlib
, removing qtest and ounit.Containers_bencode
for lightweight (de)serAssoc.{keys,values,map_values}
CCArray.map_inplace
CCString.{to_hex,of_hex}
Format.styling
Format
compatible with OCaml 5.0, using Stag for colors[@@@ifge 4.12]
-style pragmasByte_buf
, a byte buffer.CCSeq.{zip_i,of_string}
CCResult.opt_map
to simplify result function application over optionals (#397)CCParse.pos
to get current pos; improve perfCCVector.resize_with
and CCVector.resize_with_init
, tests and doc (#389)CCVector.insert
CCSeq.to_array
CCVector
either
compatibility libraryeither
compatibility library instead of shimsCCOpt
to CCOption
and deprecate CCOpt
CCIO
CCOrd
: add poly
, deprecate compare
CCIO.File.walk_iter
CCParse
: heavy refactoring, many new functions
slice
and the ability to recurse on themor_
, both
, lookahead
, U.bool
CCIO.read_lines_seq
CCIO.read_lines_seq
(backported from 3.6)CCHash.map
and CCHash.bytes
Seq.t
based functions{make,empty,of_uchar}
CCFormat.{const_string,opaque}
CCOpt.{some,none}
ANSI_codes
moduleequal
, refactor for performance and readability{sorted_diff_uniq,sorted_mem,sorted_diff,sorted_remove}
Csexp/Canonical_sexp
CCOpt.get_exn_or
and deprecate CCOpt.get_exn
get_and_remove_exn
operationCCString.uniq
CCHash
to use FNV in many combinatorsloc
type to the functor's argument's typecutoff
in String.edit_distance
for_all
and exists
string_lines
combinatorpartition_map
CCList.cons'
CCMap
with update (#352)CCMap.of_{list,iter,seq}_with
functionsCCHashtbl.{of,add}_{list,seq,iter}_with
Pool.sequence_a
CCList.chunks
CCString
CCList.reduce
(resolves #305)CCInt
pick popcount at runtime on 64 bitsCCFormat
, add append
, append_l
, infix ++
for sequencing, space
, break
, cut
CCSexp
, handle non-ascii escapes in stringsCCUtf8_string
: add and expose uchar_to_bytes
List.combine_chop
and corresponding (and&)
synchronized productCCList.mguard
function for list comprehensionsCCMap.to_list
CCMap.update
so that it is shadowed by Stdlib.Map.updateCCMutHeap
mutable heap with increase/decreasesee https://github.com/c-cube/ocaml-containers/issues/290 for a summary of a subset of these changes.
packaging:
containers
, containers-data
, and containers-thread
.containers.iter
and merge parts of it into containers-data
;CCSexp
into the core library, remove containers.sexp
.api:
CCKlist
CCKlist
from everywhere<op>_std_seq
to <op>_seq
, making Seq.t
the standard everywhere; remove the old <op>_seq
that were previously deprecated in favor of <op>_iter
.shrink
into truncate
remove to CCVector.remove_unordered
?eq
optionalfilter'
into filter_in_place
String
<$>
operatorget_lazy
Infix
module, then include itCCInt.sign
using CCInt.compare
of_float
of_string_exn
CCResult.get_lazy
Int.popcount
operatorpi
of_string_opt
always_eq
/never_eq
in CCEqual
cutoff
arg on String.edit_distance
remove_and_shift
exn
combinatorcopy_into
for transferring data between channelsto_array
, cons and cons_fold
And many, many bugfixes.
CCVector.of_iter
{result,uchar}
{of,to}_seq
a bit everywhereCCKList
as it's subsumed by Seq
>= 4.08
, support let+ and let* operatorsfold_on_map
CCGraph
to iter{to,of,add}_{iter,std_seq}
where relevantensure_session_leader
and add some docsmonoid_product
to Array and VectorCCvector
CCVector.fill_empty_slots_with
CCVector.shrink_to_fit
to limit memory usageCCVector.clear_and_reset
parse_string_list
and the list decoderCCUnix.with_temp_dir
functionCCOpt.to_seq
, provide to_iter
insteadCCOpt.value
to improve compat with Stdlib.Option
CCVector.mapi
CCSexp.atom
and list
which was lost in 2.7CCChar
in containers.ml_gen
suffixes to some functions#;
for commenting a sexpto_string
to many modules (#270)CCDeque.{remove_*;update_*}
, CCDeque.{*_opt}
CCDeque.{filter,filter_map}
CCDeque.filter_in_place
CCBool.{to,of}_int
Result.flatten_l
to turn a list of results into a result of listStdlib.Fun
CCArray.Infix
Fun.finally
when finaliser raisesbugfix release:
many
Containers.Stdlib
on OCaml 4.07iter
instead for testsremove
function to het map/tbliter
, not sequence
, in testsCCList.init
Array.random_choose
fail on empty array at creation timeArray.random_choose
raise invalid_arg instead of not_foundCCFQueue
(@dinosaure).pop
, fix off by one errorRandom.sample_without_{replacement,duplicates}
CCResult.iter_err
CCEqual.{always,never}_eq
containersLabels.ml
, generate unlabelled interfaces from labelled onesCCEqualLabels
CCArray_sliceLabels
CCStringLabels
CCResult.get_or_failwith
CCInt.( ** )
for integer exponentiationList.counts
, related to List.count
(#230)Labels
moduleVector.{filter,filter_map}_in_place
CCIntMap.{filter,filter_map,merge,is_empty}
CCHeap.Make_from_compare
(#225)CCList.{group_by,join,join_by,join_all_by,group_join_by}
Float.{min,max}
compliant with revised IEEE754[@inline]
attributes since they break on 4.02.3CCOpt.return_if
CCOpt.flatten
CCString.{,r}drop_while
CCListLabels
CCList{,Labels}
CCArray{,Labels}
CCInt64
compatible with Int64
(breaking!) (closes #192)CCBijection
in containers.data?margin
parameter to CCFormat.ksprintf
CCUtf8_string
with basic encoding and decoding functionalitiesCCLazy_list.<|>
CCNativeint
CCInt.Infix
to get a uniform interface with CCInt{32,64}
CCInt{32,64}.Infix
CCHash.combine{5,6}
{interleave,intersperse}
(closes #191)CCArrayLabels
(closes #193)CCFun_vec
data structure for fast functional vectorsList.sort_uniq
bytes
in jbuild filesbecome defensive w.r.t polymorphic operators:
include CCMonomorphic
in Containers
moduleCCList
print
to pp
for Format printers (closes #153, #181)CCFlatHashtbl
CCList.iteri2
and CCList.foldi2
PARAM.min_size
in CCPool
CCEqual.physical
CCMonomorphic
module shipped into a containers.monomorphic
libraryArray.lookup
explicit (closes #174)CCFormat.lazy_{or,force}
for printing thunksFormat.pp_print_text
directlyCCHeap.delete_{one,all}
CCList.tail_opt
CCRAL.drop
(see #184)CCFormat
: fix support of unrecognized stylesCCList.repeat
Format
types and functions in CCFormat
CCList.{get,insert,set}_at_idx
work with negative indicesCCListLabels
drop
parameter to string-splitting functionsHash.const0
for trivial hash function that ignores its input{assoc_opt,assq_opt}
CCList
CC{Map,Set}
CCImmutArray.sub
CCTrie.Make
: Remove polymorphic comparisonCCList.cartesian_product
, which returns results in unspecified order (close #154)CCMap.union
CCRef.swap
CCArray.swap
CCWBTree.get_rank
CCWBTree.get_rank{,_exn}
List.map
Using efficient chunking algorithmCCVector.append_array
(empty vector case)CCFQueue.take_back_exn
raised InvalidArg instead of Empty on an empty queueCCString.{prefix,suffix}
CCString.{prefix,suffix}
CCFun.tap
example in docCCFQueue.take_{front,back}_l
in some corner casesCCPool
CCBool.negate
CCString.compare_natural
(closes #146)CCCache.with_cache{,_rec}
(closes #140)CCList.split
(by @bikalgurung, see #138)CCRingBuffer.peek_{front,back}
to return options (closes #127)CCRingBuffer.is_full
CCArray.find_map{,_i}
, deprecated older names (closes #129)CCList.{keep,all}_{some,ok}
(closes #124)CCSimple_queue
(close #125)CCSimple_queue
to containers.dataCCIntMap
CCRingBuffer.skip
, and corresponding testsCCRingBuffer
(see #126). Add strong tests.CCIntMap
, based on @jmid's workString List ListLabels Array ArrayLabels Char Random
CCString.{l,r}trim
(close #121)CCInt.floor_div
and CCInt.rem
CCBV
CCList.take_drop_while
(close #120)CCstring.equal_caseless
(close #112)CCString.split
(close #115)CCFormat.text
(close #111)CCFormat.{newline,substring}
CCList.combine_gen
(close #110)CCEqual
CCResult.fold_ok
(closes #107)CCFormat.with_color_ksf
for colored printingCCInt.range{,',by}
for iterating on integer rangesCCString.Sub.get
CCResult.add_ctx{,f}
for replacing stack tracesCCString.split_on_char
CCArray.{fold_map,scan_left}
(close #101)CCList.scan_left
CCList.{cartesian_product,map_product_l}
CCUnix.with_file_lock
for locking whole filesCCFormat.of_chan
CCFormat.flush
{map_lazy, or_, or_lazy, to_result, to_result_lazy, of_result}
to CCOpt
CCEqual
, for optimizationList.combine
CCResult
CCZipper.is_focused
(closes #102)CCFormat.Dump
for tuples(##)
in CCIntMap
bugfixes:
CCGraph
(in DFS traversal)CCOpt.filter
(close #100)new features:
CCHeap.to_seq_sorted
CCHeap.to_list_sorted
CCIO.File.walk_l
cleanup and doc:
CCPool
CCParse
See https://github.com/c-cube/ocaml-containers/issues/84 for an overview.
Breaking and Removals:
result
everywhereCCVHashconsedSet
CCAllocCache
CCBloom
CCHash
, changing the type to 'a -> int
, relying on Hashtbl.seeded_hash
for combining hashesCCList.Zipper
into its own module, CCZipper
in containers.dataCCList.Assoc
CCList.Idx
, rename its functions to toplevelCCList.Set
, move functions to toplevel and rename themCCBitField
with a much simpler interfaceCCArray.Sub
into CCArray_slice
remove containers.string
CCFormat
:
start/stop
args, make sep
a unit printer
CCFormat.tee
CCFormat.Dump.{result,to_string}
or_
by default
in labelled functions_
in CCOrd
primitivescontainers.io
(deprecated for a while)containers.bigarray
CCSexpM
, use ocamllex for a much simpler CCSexp
using ocamllexCCParse
into core, a simple, lightweight version of parser combsCCPrint
, use CCFormat
instead (also, update tests relying on it)CCUnix.escape_str
Additions:
CCHashtbl
:
CCHash.{list,array}_comm
CCHashtbl.Poly
and fix issue in Containers (close #46)CCHashtbl.get_or_add
CCList.sublists_of_len
(close #97)Char.{of_int{,_exn},to_int}
(close #95)CCResult.{is_ok,is_error}
CCUnix
a bitcontainers.ml
so as to include all core containersCCOrd.Infix
Labels
versions of CCList
and CCArray
CCString.edit_distance
CCString.Find
for efficient sub-string searchingBugfixes:
CCIO
: deal properly with broken symlinks and permission errorsCCSemaphore.with_acquire
: release a non locked mutex is UBof_list
in relevant modules (close #85)Sequence.flatMap
(close #90)try_with_lock
to wrap Mutex.try_lock
CCMultiSet.remove_all
CCIO
(close #86)start
/stop
arguments empty in printers (#82)CCFormat.{with_color_sf,fprintf_dyn_color,sprintf_dyn_color}
CCFormat.Dump
for easy debugging (see #82)CCArray.Sub.to_list
CCArray.{sorted,sort_indices,sort_ranking}
(closes #81)\r
in CCSexpM (fixes #83)Containers.IO
CCArray.Sub
CCArray.Sub.sub
CCArray.equal
CCString.*_ascii
; add CCChar.{upper,lower}case_ascii
CCArray
: fold2,iter2,map2CCArray.rev
CCFloat.round
CCVector.append_gen
CCList.{head_opt,last_opt}
CCInt.{print_binary,to_string_binary}
+ tests (thanks @gsg)CCArray.{for_all2,exists2}
CCResult.map_or
CCString.Split.{left,right}
(#75)CCMultiSet
CCRingBuffer.Make
sigCCHeap
CCFlatHashtbl
, add some testsCCError
and CCResult
(close #73)CCstring.of_char
CCVector.equal
CCOpt.get_or
with label, deprecates get
CCArray.get_safe
(close #70)CCGraph.is_dag
String
, add Fun.opaque_identity
CCLazy_list.take
Lazy_list.filter
CCList.range_by
CCString.find_all
(allow overlaps)CCString.pad
for more webscale(--^)
to CCRAl, CCFQueue, CCKlist (closes #56); add CCKList.Infix
CCInt
and CCFloat
CCList.{sorted_insert,is_sorted}
CCLazy_list
in containers.iter (with a few functions)CCTrie.longest_prefix
CCTrie.{above,below}
CCOpt.if_
have
CCRandom.split_list
fail on len=0
CCRandom.sample_without_replacement
fail if n<=0
CCOpt.{for_all, exists}
CCRef.{get_then_incr,incr_then_get}
Result.{to,of}_err
CCFormat.within
map/mapi
to some of the map types.CCString.{drop,take,chop_prefix,chop_suffix,filter,filter_map}
CCList.fold_filter_map
CCIO.File.with_temp
for creating temporary files{CCArray,CCVector,CCList}.(--^)
for right-open rangesContainers.{Char,Result}
CCPersistentHashtbl.merge
and add CCMap.merge_safe
CCHet
, heterogeneous containers (table/map) indexed by keysCCString.rev
CCImmutArray
into containers.dataCCList.Assoc.remove
CCPersistentHashtbl.S.merge
more general.CCString.Find
(hand-specialize code)CCFormat.to_file
(fd was closed too early)CCString.find
find_all{,_l}
others:
watch
target should build allIO
section to the tutorial-j 0
for ocamlbuildCCHeap.{of_gen,of_seq,of_klist}
CCMixmap
CCHash.state
abstract (used to be int64
)~eq
to CCGraph.Dot.pp
CCFuture
into CCPool
containers.bigarray
CCHashtbl.{Counter,Default}
tablesCCLinq
in favor of standalone OLinq
(to be released)CCHashtbl.Make.{keys,values}_list
CCSexpM.ID_MONAD
{CCList,CCOpt}.Infix
modulesCCOpt.map_or
, deprecating CCopt.maybe
CCFormat.sprintf_no_color
CCFormat.{h,v,hov,hv}box
printer combinatorsCCFormat.{with_color, with_colorf}
CCList.hd_tl
CCResult.{map_or,get_or}
CCGraph.make
and utilsCCHashtbl.add_list
CCHashtbl
, to replace CCHashtbl.Counter
CCPair.make
CCString.Split.{left,right}_exn
CCIO.File.{read,write,append}
for quickly handling filesCCRandom.pick_{list,array}
CCList.Assoc.update
CCList.Assoc.mem
{CCMap,CCHashtbl}.get_or
for lookup with default valueCCLock.{decr_then_get, get_then_{decr,set,clear}}
CCFuture
into CCPool
, expose the thread poolCCTimer
out of CCFuture
, a standalone 1-thread timerCCThread.Queue
into CCBlockingQueue
CCResult
, with dependency on result
for retrocompatCCThread.spawn{1,2}
CCUnix
(for sockets, files, and processes)CCFun.finally{1,2}
, convenience around finally
CCLock.update_map
CCLock.{incr_then_get,get_then_incr}
CCFormat.{pair,triple,quad}
examples/id_sexp
so it can read on stdinCCList.fold_map2
CCFloat.sign
CCSexpStream
CCFormat
, using tags and ANSI codesCCVector.ro_vector
as a convenience aliasCCOrd.option
CCMap.{keys,values}
CCAllocCache
, an allocation cache for short-lived arraysCCError.{join,both}
applicative functions for CCErrorwork on CCRandom
by octachron:
split_list
uniform{Set.Map}.OrderedType
in Containers
'a CCParse.t
with continuationsCCParse.parse_*
functionsCCList.Zipper.is_empty
CCVector.rev'
, renamed into CCVector.rev_in_place
CCVector.flat_map'
, renamed flat_map_seq
CCMap.add_{list,seqe
CCSet.add_{list,seq}
Map.print
and Set.print
CCFormat.{ksprintf,string_quoted}
CCArray.sort_generic
for sorting over array-like structures in placeCCHashtbl.add
mimicking the stdlib Hashtbl.add
CCString.replace
and testsCCPersistentHashtbl.stats
CCPersistentHashtbl
make watch
targetCCVector.rev_iter
CCVector.append_list
CCVector.ensure_with
CCVector.return
CCVector.find_map
CCVector.flat_map_list
Containers.Hashtbl
with most combinators of CCHashtbl
CCList.Zipper
CCList.Zipper
CCHashtbl.update
CCHashtbl.MakeCounter
CCList.fold_flat_map
CCChar
CCFormat
CCPrint.char
CCVector.to_seq_rev
CCLevenshtein
CCSexpM
CCList.fold_map
CCError.guard_str_trace
CCError.of_exn_trace
CCKlist.memoize
for costly computationsCCLevenshtein.Index.{of,to}_{gen,seq}
and cardinal
CCSexpM.print
containers.string
CCString.find
CCString.replace
if sub=""
CCKList.take
, it was slightly too eagerCCLinq
(now simpler and cleaner)input
and ParseError
in CCParse
containers.misc
and containers.lwt
into their own repoCCVector
CCDeque.of_seq
CCWBTree
, a weight-balanced tree, in containers.data
.CCBloom
in containers.data
, a bloom filterCCHashTrie
in containers.data
, HAMT-like associative mapCCBitField
in containers.data
, a safe abstraction for bitfields of < 62 bits
CCHashSet
into containers.data
, a mutable setCCInt64
RAL
into containers.data
as CCRAL
CCThread
in containers.thread
, utils for threading (+ blocking queue)CCSemaphore
in containers.thread
, with simple semaphorecontainers.top
, a small library that installs printersCCParse.memo
for memoization (changes CCParse.input
)CCString.compare_versions
CCHash
with a functor and module type for generic hashingCCList.{take,drop}_while
; improve map performanceCCList.cons_maybe
CCArray.bsearch
(back from batteries)CCKList
CCList.split
, introduce CCList.take_drop
instead.CCKtree.force
CCIntMap
; now flagged "stable" (for the API)CCOpt.choice_seq
CCOpt.print
CCIntMap.{equal,compare,{of,to,add}_{gen,klist}}
CCThread.Barrier
for simple synchronizationCCPersistentArray.{append,flatten,flat_map,of_gen,to_gen}
CCDeque.clear
CCDeque.{fold,append_{front,back},{of,to}_{gen,list}}
and othersCCKList.{zip, unzip}
CCKList.{of_array,to_array}
CCKList.{head,tail,mapi,iteri}
CCKList.{unfold,of_gen}
CCParse.{input_of_chan,parse_file,parse_file_exn}
CCParse.U.list
to skip newlinesCCDeque.print
CCBV.print
CCHashtbl
CCSexpM
CCTrie
; bugfix in CCTrie.below
CCIntMap
, add type safety, and fix various bugs in {union,inter}
CCThread.Queue.{push,take}_list
CCThread.Queue.{take,push}
CCDeque
, more efficientCCString.blit
so it writes into Bytes.t
CCIO.with_{in, out}
NOTE: use of containers.io
is deprecated (its only module has moved to containers
)
CCString.mem
CCString.set
for updating immutable stringsCCList.cons
function-safe-string
on the project; fix -safe-string
issuesCCIO
from containers.io
to containers
, add dummy module in containers.io
CCIO.read_all_bytes
, reading a whole file into a Bytes.t
CCIO.with_in_out
to read and write a fileCCArray1
in containers.bigarray, a module on 1-dim bigarrays (experimental)CCGraph
in containers.data
, a simple graph abstraction similar to LazyGraph
CCString
CCError.catch
, in prevision of the future standard Result.t
typeCCError.Infix
moduleCCHashconsedSet
in containers.data
(set with maximal struct sharing)CCRingBuffer
CCRandom.float_range
CCList.{remove,is_empty}
CCOpt.is_none
containers_string
and containers_advanced
Containers_string.Parse
, very simple monadic parser combinatorsCCList.{find_pred,find_pred_exn}
CCUnix.escape_str
CCUnix
CCUnix
, use Unix.environment
as the default environmentCCList.partition_map
RingBuffer.{of_array, to_array}
convenience functionscontainers.misc.RAL
: more efficient in memory (unfold list)CCInt.pow
(thanks to bernardofpc)CCList.group_succ
containers.data.CCMixset
, set of values indexed by poly keysCCUnix
CCUnix.async_call
for spawning and communicating with subprocessCCList.Set.{add,remove}
CCstring.Split.list_
containers.misc.Puf.iter
CCString.{lines,unlines,concat_gen}
CCUnix
(with a small subprocess API)CCList.{sorted_merge_uniq, uniq_succ}
CCList.sorted_merge
(different semantics)CCPersistentArray
(credit to @gbury and Jean-Christophe Filliâtre)CCIntMap
(big-endian patricia trees) in containers.dataCCFQueue.add_seq_front
CCFQueue.{rev, --}
App_parse
in containers.string
, experimental applicative parser combinatorscontainers.pervasives
, add the module Containers
to coreCCFormat.to_file
Float
, Ref
, Set
, Format
to CCPervasives
CCRingBuffer.append
(simple implementation)containers.data
now depends on bytesCCRingBuffer
module, imperative deque with batch (blit) operations, mostly done by Carmelo PiccioneLwt_pipe
and Lwt_klist
streams for Lwt, respectively (un)bounded synchronized queues and lazy listsCCKTree.print
, a simple S-expressions printer for generic treesCCMixmap
in containers.data (close #40), functional alternative to CCMixtbl
CCTrie
implementation_oasis
for binariesCCCache
(see #38)CCCache.lru
CCFormat.seq
combinatorCCSet
module in core/CCRef
module in core/@Emm
to authorsCCFuture
(much simpler, cleaner, basic API and thread pool)CCLock
in containers.threadtest_levenshtein
with other testsContainers_misc.RoseTree
.containers.misc
(see _oasis
for details)make devel
command, activating most flags, for developers (see #27)ccvector.iteri
CCFormat
into core/CCArray
fold_while
impl for CCList
and CCArray
CCBigstring.length
for more consistency with the CCString
module.CCIO.remove*
functions.CCIO.remove_safe
.CCHashtbl.{keys,values}_list
in the functor as well. Better doc.CCHashtbl.{keys,values}_list
CCHashtbl.Make
cgi
/CCGen
and CCsequence
(use the separate libraries)containers.io
, containers.iter
, containers.sexp
, containers.data
)src/
sexp
:
CCSexp
now split into CCSexp
(manipulating expressions) and CCSexpStream
CCSexpM
for a simpler, monadic parser of S-expressions (deprecating CCSexpStream
)core
:
CCString.fold
CCstring.suffix
CCString.init
CCString
(slightly over-reaching sed)CCFloat.{fsign, sign_exn}
(thanks @bernardofpc)containers.bigarray
, with CCBigstring
CCHashtbl.map_list
io
:
CCIO.read_all
now with ?size parameterBytes.extend
(praise modernity!)CCIO.read_all
and CCIO.read_chunks
-no-alias-deps
gen/
for CCGen
(symlink) rather than a copy.iter
of iterators.CCKTree
: more printers (to files), Format
printerCCOpt.get_lazy
convenience functionCCFloat
, add float functions to CCRandom
(thanks to @struktured)CCIO
module, much simpler, but incompatible interfaceCCIO
to advanced.CCMonadIO
CCMultiSet.{add_mult,remove_mult,update}
CCVector.{top,top_exn}
CCFun.compose_binop
(binary composition)CCList.init
CCError.map2
has a more general type (thanks to @hcarty)new module CCCache
misc
CCache
.{size,iter}lwt/Lwt_actor
stub, for erlang-style concurrency (albeit much much more naive)misc/Mixtbl
added from its old repositoryCCList.{flatten,append,flat_map}
, some functions are now tailreccppo
(thanks to @whitequark, see AUTHORS.md
) and bytes
CCError
:
CCPervasives.Opt
-> CCPervasives.Option
Levenshtein.Index.remove
changed signature (useless param removed)CCVector
(so that e.g. push is inline)CCVector
CCSequence
now provides some bytes-dependent operationsCCList.(>|=)
map operatorCCOpt.filter
CCInt.neg
CCMap
wrapper to the standard Map
moduleCCFun
and CCString
depend on ocaml versionCCString
AUTHORS.md
CCOpt.get
CCSexp.Traverse
CCMultiSet.mli
, to explain meet/intersection/unionCCMultiset
: Add meetcontainers.advanced
core/CCSexp
for fast and lightweight S-expressions parsing/printingCCLinq
, CCBatch
and CCat
from core/ to advanced/Array.create
CCError.{iter,get_exn}
CCPair.print
CCRandom
CCHashtbl
to CCFlatHashtbl
; new module CCHashtbl
that wraps and extends the standard hashtableCCPervasives
module, replacing modules of the standard libraryCCString.t
(duplicate of String.t which already exists)sequence
repoCCSequence
is now a copy of sequence
CCOpt.wrap{1,2}
CCList.findi
, CCArray.findi
and CCArray.find_idx
Format
printers (using break hints)CCOrd.map
CCIO
: monad for IO actions-as-values
>>>=
operator rather than callbacksFile
for basic filenames manipulationsSeq
for streamsCCMultiMap
: functor for bidirectional mappingsCCMultiSet
: sequenceRAL
(random access lists)CCList.Ref
to help use references on listsCCKList
: group,uniq,sort,sort_uniq,repeat
and cycle
, infix ops, applicative,productCCTrie.above/below
: ranges of itemsCCPair
CCCat
: funny (though useless) definitions inspired from HaskellCCList
: applicative instanceCCString.init
CCError.fail_printf
CCString
CCHashtbl
: open-addressing table (Robin-Hood hashing)CCError
.guard,wrap1,etc.CCList
: map_m_par
PrintBox
now more powerfulCCFQueue
: logarithmic access by indexCCPrint.to_file
CCArray.lookup
for divide-and-conquer searchCCList.sort_uniq
CCError
: retry and choose combinatorsCCPrint
CCopt.pure
CCPersistentHashtbl
with new functions; updated doc, simplified codeCCString
into core/, since it deals with a basic type; also add some features to CCString
(Sub and Split modules to deal with slices and splitting by a string)CCArray.blit
, .Sub.to_slice
; some bugfixesCCError
CCError.map2
CCError
CCArray.shuffle
CCArray.shuffle
CCOpt.get_exn
CCOpt.sequence_l
CCOpt
CCFun
_oasis
CCTrie
, a compressed functorial persistent trie structureCCPrint.unit
, add CCPrint.silent
NOTE: git log --no-merges previous_version..HEAD --pretty=%s