Page
Library
Module
Module type
Parameter
Class
Class type
Source
CCFun.(let@) (if OCaml >= 4.08)CCHet.Tbl.{clear,reset}resize_withCCArray: add mapi_inplacecontainers.scc for strongly connected componentsCCSeq: add concat_mapCCSeq: add some missing function from 4.14CCInt64.{hash,hash_to_int64}Ref: add protect functionSeq in CCSeq for ocaml >= 4.07Containers_cbor modulepopcount operationCCBV:
bytes underneath, not an array of integerscontainers_testlib, removing qtest and ounit.cbor: use int64 as main int typeContainers_bencode for lightweight (de)serAssoc.{keys,values,map_values}CCArray.map_inplaceCCString.{to_hex,of_hex}Format.stylingFormat 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.insertCCSeq.to_arrayCCVectoreither compatibility libraryeither compatibility library instead of shimsCCOpt to CCOption and deprecate CCOptCCIOCCOrd: add poly, deprecate compareCCIO.File.walk_iterCCParse: heavy refactoring, many new functions
slice and the ability to recurse on themor_, both, lookahead, U.boolCCIO.read_lines_seqCCIO.read_lines_seq (backported from 3.6)CCHash.map and CCHash.bytesSeq.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_sexpCCOpt.get_exn_or and deprecate CCOpt.get_exnget_and_remove_exn operationCCString.uniqCCHash to use FNV in many combinatorsloc type to the functor's argument's typecutoff in String.edit_distancefor_all and existsstring_lines combinatorpartition_mapCCList.cons'CCMap with update (#352)CCMap.of_{list,iter,seq}_with functionsCCHashtbl.{of,add}_{list,seq,iter}_withPool.sequence_aCCList.chunksCCStringCCList.reduce (resolves #305)CCInt pick popcount at runtime on 64 bitsCCFormat, add append, append_l, infix ++ for sequencing, space, break, cutCCSexp, handle non-ascii escapes in stringsCCUtf8_string: add and expose uchar_to_bytesList.combine_chop and corresponding (and&) synchronized productCCList.mguard function for list comprehensionsCCMap.to_listCCMap.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:
CCKlistCCKlist 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 truncateremove to CCVector.remove_unordered?eq optionalfilter' into filter_in_placeString<$> operatorget_lazyInfix module, then include itCCInt.sign using CCInt.compareof_floatof_string_exnCCResult.get_lazyInt.popcount operatorpiof_string_optalways_eq/never_eq in CCEqualcutoff arg on String.edit_distanceremove_and_shiftexn combinatorcopy_into for transferring data between channelsto_array, cons and cons_foldAnd 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_mapCCGraph to iter{to,of,add}_{iter,std_seq} where relevantensure_session_leader and add some docsmonoid_product to Array and VectorCCvectorCCVector.fill_empty_slots_withCCVector.shrink_to_fit to limit memory usageCCVector.clear_and_resetparse_string_list and the list decoderCCUnix.with_temp_dir functionCCOpt.to_seq, provide to_iter insteadCCOpt.value to improve compat with Stdlib.OptionCCVector.mapiCCSexp.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_placeCCBool.{to,of}_intResult.flatten_l to turn a list of results into a result of listStdlib.FunCCArray.InfixFun.finally when finaliser raisesbugfix release:
manyContainers.Stdlib on OCaml 4.07iter instead for testsremove function to het map/tbliter, not sequence, in testsCCList.initArray.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_errCCEqual.{always,never}_eqcontainersLabels.ml, generate unlabelled interfaces from labelled onesCCEqualLabelsCCArray_sliceLabelsCCStringLabelsCCResult.get_or_failwithCCInt.( ** ) for integer exponentiationList.counts, related to List.count (#230)Labels moduleVector.{filter,filter_map}_in_placeCCIntMap.{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_ifCCOpt.flattenCCString.{,r}drop_whileCCListLabelsCCList{,Labels}CCArray{,Labels}CCInt64 compatible with Int64 (breaking!) (closes #192)CCBijection in containers.data?margin parameter to CCFormat.ksprintfCCUtf8_string with basic encoding and decoding functionalitiesCCLazy_list.<|>CCNativeintCCInt.Infix to get a uniform interface with CCInt{32,64}CCInt{32,64}.InfixCCHash.combine{5,6}{interleave,intersperse} (closes #191)CCArrayLabels (closes #193)CCFun_vec data structure for fast functional vectorsList.sort_uniqbytes in jbuild filesbecome defensive w.r.t polymorphic operators:
include CCMonomorphic in Containers moduleCCListprint to pp for Format printers (closes #153, #181)CCFlatHashtblCCList.iteri2 and CCList.foldi2PARAM.min_size in CCPoolCCEqual.physicalCCMonomorphic 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_optCCRAL.drop (see #184)CCFormat: fix support of unrecognized stylesCCList.repeatFormat types and functions in CCFormatCCList.{get,insert,set}_at_idx work with negative indicesCCListLabelsdrop parameter to string-splitting functionsHash.const0 for trivial hash function that ignores its input{assoc_opt,assq_opt}CCListCC{Map,Set}CCImmutArray.subCCTrie.Make: Remove polymorphic comparisonCCList.cartesian_product, which returns results in unspecified order (close #154)CCMap.unionCCRef.swapCCArray.swapCCWBTree.get_rankCCWBTree.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 casesCCPoolCCBool.negateCCString.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_fullCCArray.find_map{,_i}, deprecated older names (closes #129)CCList.{keep,all}_{some,ok} (closes #124)CCSimple_queue (close #125)CCSimple_queue to containers.dataCCIntMapCCRingBuffer.skip, and corresponding testsCCRingBuffer (see #126). Add strong tests.CCIntMap, based on @jmid's workString List ListLabels Array ArrayLabels Char RandomCCString.{l,r}trim (close #121)CCInt.floor_div and CCInt.remCCBVCCList.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)CCEqualCCResult.fold_ok (closes #107)CCFormat.with_color_ksf for colored printingCCInt.range{,',by} for iterating on integer rangesCCString.Sub.getCCResult.add_ctx{,f} for replacing stack tracesCCString.split_on_charCCArray.{fold_map,scan_left} (close #101)CCList.scan_leftCCList.{cartesian_product,map_product_l}CCUnix.with_file_lock for locking whole filesCCFormat.of_chanCCFormat.flush{map_lazy, or_, or_lazy, to_result, to_result_lazy, of_result} to CCOptCCEqual, for optimizationList.combineCCResultCCZipper.is_focused (closes #102)CCFormat.Dump for tuples(##) in CCIntMapbugfixes:
CCGraph (in DFS traversal)CCOpt.filter (close #100)new features:
CCHeap.to_seq_sortedCCHeap.to_list_sortedCCIO.File.walk_lcleanup and doc:
CCPoolCCParseSee https://github.com/c-cube/ocaml-containers/issues/84 for an overview.
Breaking and Removals:
result everywhereCCVHashconsedSetCCAllocCacheCCBloomCCHash, changing the type to 'a -> int, relying on Hashtbl.seeded_hash for combining hashesCCList.Zipper into its own module, CCZipper in containers.dataCCList.AssocCCList.Idx, rename its functions to toplevelCCList.Set, move functions to toplevel and rename themCCBitField with a much simpler interfaceCCArray.Sub into CCArray_sliceremove containers.string
CCFormat:
start/stop args, make sep a unit printerCCFormat.teeCCFormat.Dump.{result,to_string}or_ by default in labelled functions_ in CCOrd primitivescontainers.io (deprecated for a while)containers.bigarrayCCSexpM, 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_strAdditions:
CCHashtbl:
CCHash.{list,array}_commCCHashtbl.Poly and fix issue in Containers (close #46)CCHashtbl.get_or_addCCList.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.InfixLabels versions of CCList and CCArrayCCString.edit_distanceCCString.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_lockCCMultiSet.remove_allCCIO (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_listCCArray.{sorted,sort_indices,sort_ranking} (closes #81)\r in CCSexpM (fixes #83)Containers.IOCCArray.SubCCArray.Sub.subCCArray.equalCCString.*_ascii; add CCChar.{upper,lower}case_asciiCCArray: fold2,iter2,map2CCArray.revCCFloat.roundCCVector.append_genCCList.{head_opt,last_opt}CCInt.{print_binary,to_string_binary} + tests (thanks @gsg)CCArray.{for_all2,exists2}CCResult.map_orCCString.Split.{left,right} (#75)CCMultiSetCCRingBuffer.Make sigCCHeapCCFlatHashtbl, add some testsCCError and CCResult (close #73)CCstring.of_charCCVector.equalCCOpt.get_or with label, deprecates getCCArray.get_safe (close #70)CCGraph.is_dagString, add Fun.opaque_identityCCLazy_list.takeLazy_list.filterCCList.range_byCCString.find_all (allow overlaps)CCString.pad for more webscale(--^) to CCRAl, CCFQueue, CCKlist (closes #56); add CCKList.InfixCCInt and CCFloatCCList.{sorted_insert,is_sorted}CCLazy_list in containers.iter (with a few functions)CCTrie.longest_prefixCCTrie.{above,below}CCOpt.if_have
CCRandom.split_list fail on len=0CCRandom.sample_without_replacement fail if n<=0CCOpt.{for_all, exists}CCRef.{get_then_incr,incr_then_get}Result.{to,of}_errCCFormat.withinmap/mapi to some of the map types.CCString.{drop,take,chop_prefix,chop_suffix,filter,filter_map}CCList.fold_filter_mapCCIO.File.with_temp for creating temporary files{CCArray,CCVector,CCList}.(--^) for right-open rangesContainers.{Char,Result}CCPersistentHashtbl.merge and add CCMap.merge_safeCCHet, heterogeneous containers (table/map) indexed by keysCCString.revCCImmutArray into containers.dataCCList.Assoc.removeCCPersistentHashtbl.S.merge more general.CCString.Find (hand-specialize code)CCFormat.to_file (fd was closed too early)CCString.findfind_all{,_l}others:
watch target should build allIO section to the tutorial-j 0 for ocamlbuildCCHeap.{of_gen,of_seq,of_klist}CCMixmapCCHash.state abstract (used to be int64)~eq to CCGraph.Dot.ppCCFuture into CCPoolcontainers.bigarrayCCHashtbl.{Counter,Default} tablesCCLinq in favor of standalone OLinq (to be released)CCHashtbl.Make.{keys,values}_listCCSexpM.ID_MONAD{CCList,CCOpt}.Infix modulesCCOpt.map_or, deprecating CCopt.maybeCCFormat.sprintf_no_colorCCFormat.{h,v,hov,hv}box printer combinatorsCCFormat.{with_color, with_colorf}CCList.hd_tlCCResult.{map_or,get_or}CCGraph.make and utilsCCHashtbl.add_listCCHashtbl, to replace CCHashtbl.CounterCCPair.makeCCString.Split.{left,right}_exnCCIO.File.{read,write,append} for quickly handling filesCCRandom.pick_{list,array}CCList.Assoc.updateCCList.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 CCBlockingQueueCCResult, with dependency on result for retrocompatCCThread.spawn{1,2}CCUnix (for sockets, files, and processes)CCFun.finally{1,2}, convenience around finallyCCLock.update_mapCCLock.{incr_then_get,get_then_incr}CCFormat.{pair,triple,quad}examples/id_sexp so it can read on stdinCCList.fold_map2CCFloat.signCCSexpStreamCCFormat, using tags and ANSI codesCCVector.ro_vector as a convenience aliasCCOrd.optionCCMap.{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_emptyCCVector.rev', renamed into CCVector.rev_in_placeCCVector.flat_map', renamed flat_map_seqCCMap.add_{list,seqeCCSet.add_{list,seq}Map.print and Set.printCCFormat.{ksprintf,string_quoted}CCArray.sort_generic for sorting over array-like structures in placeCCHashtbl.add mimicking the stdlib Hashtbl.addCCString.replace and testsCCPersistentHashtbl.statsCCPersistentHashtblmake watch targetCCVector.rev_iterCCVector.append_listCCVector.ensure_withCCVector.returnCCVector.find_mapCCVector.flat_map_listContainers.Hashtbl with most combinators of CCHashtblCCList.ZipperCCList.ZipperCCHashtbl.updateCCHashtbl.MakeCounterCCList.fold_flat_mapCCCharCCFormatCCPrint.charCCVector.to_seq_revCCLevenshteinCCSexpMCCList.fold_mapCCError.guard_str_traceCCError.of_exn_traceCCKlist.memoize for costly computationsCCLevenshtein.Index.{of,to}_{gen,seq} and cardinalCCSexpM.printcontainers.stringCCString.findCCString.replace if sub=""CCKList.take, it was slightly too eagerCCLinq (now simpler and cleaner)input and ParseError in CCParsecontainers.misc and containers.lwt into their own repoCCVectorCCDeque.of_seqCCWBTree, 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 bitsCCHashSet into containers.data, a mutable setCCInt64RAL into containers.data as CCRALCCThread 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_versionsCCHash with a functor and module type for generic hashingCCList.{take,drop}_while; improve map performanceCCList.cons_maybeCCArray.bsearch (back from batteries)CCKListCCList.split, introduce CCList.take_drop instead.CCKtree.forceCCIntMap; now flagged "stable" (for the API)CCOpt.choice_seqCCOpt.printCCIntMap.{equal,compare,{of,to,add}_{gen,klist}}CCThread.Barrier for simple synchronizationCCPersistentArray.{append,flatten,flat_map,of_gen,to_gen}CCDeque.clearCCDeque.{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.printCCBV.printCCHashtblCCSexpMCCTrie; bugfix in CCTrie.belowCCIntMap, add type safety, and fix various bugs in {union,inter}CCThread.Queue.{push,take}_listCCThread.Queue.{take,push}CCDeque, more efficientCCString.blit so it writes into Bytes.tCCIO.with_{in, out}NOTE: use of containers.io is deprecated (its only module has moved to containers)
CCString.memCCString.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.ioCCIO.read_all_bytes, reading a whole file into a Bytes.tCCIO.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 LazyGraphCCStringCCError.catch, in prevision of the future standard Result.t typeCCError.Infix moduleCCHashconsedSet in containers.data (set with maximal struct sharing)CCRingBufferCCRandom.float_rangeCCList.{remove,is_empty}CCOpt.is_nonecontainers_string and containers_advancedContainers_string.Parse, very simple monadic parser combinatorsCCList.{find_pred,find_pred_exn}CCUnix.escape_strCCUnixCCUnix, use Unix.environment as the default environmentCCList.partition_mapRingBuffer.{of_array, to_array} convenience functionscontainers.misc.RAL: more efficient in memory (unfold list)CCInt.pow (thanks to bernardofpc)CCList.group_succcontainers.data.CCMixset, set of values indexed by poly keysCCUnixCCUnix.async_call for spawning and communicating with subprocessCCList.Set.{add,remove}CCstring.Split.list_containers.misc.Puf.iterCCString.{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_frontCCFQueue.{rev, --}App_parse in containers.string, experimental applicative parser combinatorscontainers.pervasives, add the module Containers to coreCCFormat.to_fileFloat, Ref, Set, Format to CCPervasivesCCRingBuffer.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 CCMixtblCCTrie implementation_oasis for binariesCCCache (see #38)CCCache.lruCCFormat.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.iteriCCFormat into core/CCArrayfold_while impl for CCList and CCArrayCCBigstring.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}_listCCHashtbl.Makecgi/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 CCSexpStreamCCSexpM for a simpler, monadic parser of S-expressions (deprecating CCSexpStream)core:
CCString.foldCCstring.suffixCCString.initCCString (slightly over-reaching sed)CCFloat.{fsign, sign_exn} (thanks @bernardofpc)containers.bigarray, with CCBigstringCCHashtbl.map_listio:
CCIO.read_all now with ?size parameterBytes.extend (praise modernity!)CCIO.read_all and CCIO.read_chunks-no-alias-depsgen/ 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.CCMonadIOCCMultiSet.{add_mult,remove_mult,update}CCVector.{top,top_exn}CCFun.compose_binop (binary composition)CCList.initCCError.map2 has a more general type (thanks to @hcarty)new module CCCache
miscCCache.{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 bytesCCError:
CCPervasives.Opt -> CCPervasives.OptionLevenshtein.Index.remove changed signature (useless param removed)CCVector (so that e.g. push is inline)CCVectorCCSequence now provides some bytes-dependent operationsCCList.(>|=) map operatorCCOpt.filterCCInt.negCCMap wrapper to the standard Map moduleCCFun and CCString depend on ocaml versionCCStringAUTHORS.mdCCOpt.getCCSexp.TraverseCCMultiSet.mli, to explain meet/intersection/unionCCMultiset: Add meetcontainers.advancedcore/CCSexp for fast and lightweight S-expressions parsing/printingCCLinq, CCBatch and CCat from core/ to advanced/Array.createCCError.{iter,get_exn}CCPair.printCCRandomCCHashtbl 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 sequenceCCOpt.wrap{1,2}CCList.findi, CCArray.findi and CCArray.find_idxFormat printers (using break hints)CCOrd.mapCCIO: 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 itemsCCPairCCCat: funny (though useless) definitions inspired from HaskellCCList: applicative instanceCCString.initCCError.fail_printfCCStringCCHashtbl: open-addressing table (Robin-Hood hashing)CCError.guard,wrap1,etc.CCList: map_m_parPrintBox now more powerfulCCFQueue: logarithmic access by indexCCPrint.to_fileCCArray.lookup for divide-and-conquer searchCCList.sort_uniqCCError: retry and choose combinatorsCCPrintCCopt.pureCCPersistentHashtbl 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 bugfixesCCErrorCCError.map2CCErrorCCArray.shuffleCCArray.shuffleCCOpt.get_exnCCOpt.sequence_lCCOptCCFun_oasisCCTrie, a compressed functorial persistent trie structureCCPrint.unit, add CCPrint.silentNOTE: git log --no-merges previous_version..HEAD --pretty=%s