From d63a887b519ea6d0ff309dce463ff858e886c000 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Fri, 8 Nov 2019 11:28:29 -0600 Subject: [PATCH] update dev docs --- dev/containers.data/CCBV.odoc | Bin 4719 -> 0 bytes dev/containers.data/CCBV/index.html | 18 --------- dev/containers.data/CCBijection.odoc | Bin 4105 -> 0 bytes .../CCBijection/Make/argument-1-L/index.html | 2 - .../CCBijection/Make/argument-2-R/index.html | 2 - .../CCBijection/Make/index.html | 7 ---- dev/containers.data/CCBijection/index.html | 4 -- .../module-type-OrderedType/index.html | 2 - .../CCBijection/module-type-S/index.html | 7 ---- dev/containers.data/CCBitField.odoc | Bin 1955 -> 0 bytes .../CCBitField/Make/argument-1-X/index.html | 2 - .../CCBitField/Make/index.html | 4 -- dev/containers.data/CCBitField/index.html | 15 ------- .../CCBitField/module-type-S/index.html | 4 -- dev/containers.data/CCCache.odoc | Bin 3840 -> 0 bytes dev/containers.data/CCCache/index.html | 38 ------------------ dev/containers.data/CCDeque.odoc | Bin 3800 -> 0 bytes dev/containers.data/CCDeque/index.html | 14 ------- dev/containers.data/CCFQueue.odoc | Bin 4475 -> 0 bytes dev/containers.data/CCFQueue/index.html | 8 ---- dev/containers.data/CCFun_vec.odoc | Bin 2379 -> 0 bytes dev/containers.data/CCFun_vec/index.html | 3 -- dev/containers.data/CCGraph.odoc | Bin 13507 -> 0 bytes dev/containers.data/CCGraph/Dot/index.html | 2 - .../CCGraph/Lazy_tree/index.html | 2 - dev/containers.data/CCGraph/Map/index.html | 4 -- dev/containers.data/CCGraph/Seq/index.html | 2 - .../CCGraph/Traverse/Event/index.html | 2 - .../CCGraph/Traverse/index.html | 7 ---- dev/containers.data/CCGraph/index.html | 36 ----------------- .../CCGraph/module-type-MAP/index.html | 4 -- dev/containers.data/CCHashSet.odoc | Bin 4641 -> 0 bytes .../CCHashSet/Make/argument-1-E/index.html | 2 - dev/containers.data/CCHashSet/Make/index.html | 3 -- dev/containers.data/CCHashSet/index.html | 2 - .../CCHashSet/module-type-ELEMENT/index.html | 2 - .../CCHashSet/module-type-S/index.html | 3 -- dev/containers.data/CCHashTrie.odoc | Bin 7391 -> 0 bytes .../CCHashTrie/Make/argument-1-K/index.html | 2 - .../CCHashTrie/Make/index.html | 9 ----- .../CCHashTrie/Transient/index.html | 7 ---- dev/containers.data/CCHashTrie/index.html | 6 --- .../CCHashTrie/module-type-KEY/index.html | 2 - .../CCHashTrie/module-type-S/index.html | 9 ----- dev/containers.data/CCHet.odoc | Bin 2212 -> 0 bytes dev/containers.data/CCHet/Key/index.html | 2 - dev/containers.data/CCHet/Map/index.html | 2 - dev/containers.data/CCHet/Tbl/index.html | 2 - dev/containers.data/CCHet/index.html | 3 -- dev/containers.data/CCImmutArray.odoc | Bin 2915 -> 0 bytes dev/containers.data/CCImmutArray/index.html | 8 ---- dev/containers.data/CCIntMap.odoc | Bin 3519 -> 0 bytes dev/containers.data/CCIntMap/index.html | 3 -- dev/containers.data/CCMixmap.odoc | Bin 4122 -> 0 bytes .../CCMixmap/Make/argument-1-X/index.html | 2 - dev/containers.data/CCMixmap/Make/index.html | 4 -- dev/containers.data/CCMixmap/index.html | 25 ------------ .../CCMixmap/module-type-ORD/index.html | 2 - .../CCMixmap/module-type-S/index.html | 4 -- dev/containers.data/CCMixset.odoc | Bin 1691 -> 0 bytes dev/containers.data/CCMixset/index.html | 17 -------- dev/containers.data/CCMixtbl.odoc | Bin 3460 -> 0 bytes dev/containers.data/CCMixtbl/index.html | 32 --------------- dev/containers.data/CCMultiMap.odoc | Bin 6681 -> 0 bytes .../CCMultiMap/Make/argument-1-K/index.html | 2 - .../CCMultiMap/Make/argument-2-V/index.html | 2 - .../CCMultiMap/Make/index.html | 3 -- .../MakeBidir/argument-1-L/index.html | 2 - .../MakeBidir/argument-2-R/index.html | 2 - .../CCMultiMap/MakeBidir/index.html | 2 - dev/containers.data/CCMultiMap/index.html | 4 -- .../CCMultiMap/module-type-BIDIR/index.html | 2 - .../module-type-OrderedType/index.html | 2 - .../CCMultiMap/module-type-S/index.html | 3 -- dev/containers.data/CCMultiSet.odoc | Bin 4513 -> 0 bytes .../CCMultiSet/Make/index.html | 8 ---- dev/containers.data/CCMultiSet/index.html | 2 - .../CCMultiSet/module-type-S/index.html | 8 ---- dev/containers.data/CCPersistentArray.odoc | Bin 4501 -> 0 bytes .../CCPersistentArray/index.html | 20 --------- dev/containers.data/CCPersistentHashtbl.odoc | Bin 6204 -> 0 bytes .../Make/argument-1-H/index.html | 2 - .../CCPersistentHashtbl/Make/index.html | 10 ----- .../CCPersistentHashtbl/index.html | 5 --- .../module-type-HashedType/index.html | 2 - .../module-type-S/index.html | 10 ----- dev/containers.data/CCRAL.odoc | Bin 5936 -> 0 bytes dev/containers.data/CCRAL/Infix/index.html | 2 - dev/containers.data/CCRAL/index.html | 6 --- dev/containers.data/CCRingBuffer.odoc | Bin 13025 -> 0 bytes .../CCRingBuffer/Array/Byte/index.html | 5 --- .../Array/Make/argument-1-Elt/index.html | 2 - .../CCRingBuffer/Array/Make/index.html | 5 --- .../CCRingBuffer/Array/index.html | 2 - .../Array/module-type-S/index.html | 5 --- .../CCRingBuffer/Byte/index.html | 15 ------- .../CCRingBuffer/Make/Array/index.html | 5 --- .../CCRingBuffer/Make/argument-1-X/index.html | 2 - .../CCRingBuffer/Make/index.html | 15 ------- .../MakeFromArray/argument-1-A/index.html | 5 --- .../CCRingBuffer/MakeFromArray/index.html | 15 ------- dev/containers.data/CCRingBuffer/index.html | 3 -- .../module-type-S/Array/index.html | 5 --- .../CCRingBuffer/module-type-S/index.html | 16 -------- dev/containers.data/CCSimple_queue.odoc | Bin 3157 -> 0 bytes .../CCSimple_queue/Infix/index.html | 2 - dev/containers.data/CCSimple_queue/index.html | 4 -- dev/containers.data/CCTrie.odoc | Bin 10017 -> 0 bytes .../CCTrie/Make/argument-1-W/index.html | 2 - dev/containers.data/CCTrie/Make/index.html | 11 ----- .../CCTrie/MakeArray/argument-1-X/index.html | 2 - .../CCTrie/MakeArray/index.html | 11 ----- .../CCTrie/MakeList/argument-1-X/index.html | 2 - .../CCTrie/MakeList/index.html | 11 ----- dev/containers.data/CCTrie/String/index.html | 11 ----- dev/containers.data/CCTrie/index.html | 2 - .../CCTrie/module-type-ORDERED/index.html | 2 - .../CCTrie/module-type-S/index.html | 11 ----- .../CCTrie/module-type-WORD/index.html | 2 - dev/containers.data/CCWBTree.odoc | Bin 9127 -> 0 bytes .../CCWBTree/Make/argument-1-X/index.html | 2 - dev/containers.data/CCWBTree/Make/index.html | 12 ------ .../CCWBTree/MakeFull/argument-1-X/index.html | 2 - .../CCWBTree/MakeFull/index.html | 12 ------ dev/containers.data/CCWBTree/index.html | 2 - .../CCWBTree/module-type-KEY/index.html | 2 - .../CCWBTree/module-type-ORD/index.html | 2 - .../CCWBTree/module-type-S/index.html | 12 ------ dev/containers.data/CCZipper.odoc | Bin 2884 -> 0 bytes dev/containers.data/CCZipper/index.html | 11 ----- dev/containers.data/index-generated.mld | 2 - dev/containers.data/index.html | 3 -- dev/containers.data/page-index.odoc | Bin 635 -> 0 bytes dev/containers.iter/CCKList.odoc | Bin 8414 -> 0 bytes dev/containers.iter/CCKList/Infix/index.html | 2 - .../CCKList/Traverse/argument-1-M/index.html | 2 - .../CCKList/Traverse/index.html | 2 - dev/containers.iter/CCKList/index.html | 16 -------- .../CCKList/module-type-MONAD/index.html | 2 - dev/containers.iter/CCKTree.odoc | Bin 4648 -> 0 bytes dev/containers.iter/CCKTree/Dot/index.html | 4 -- .../CCKTree/class-type-pset/index.html | 2 - dev/containers.iter/CCKTree/index.html | 22 ---------- dev/containers.iter/CCLazy_list.odoc | Bin 2010 -> 0 bytes .../CCLazy_list/Infix/index.html | 2 - dev/containers.iter/CCLazy_list/index.html | 3 -- dev/containers.iter/index-generated.mld | 2 - dev/containers.iter/index.html | 3 -- dev/containers.iter/page-index.odoc | Bin 282 -> 0 bytes dev/containers.monomorphic/CCMonomorphic.odoc | Bin 1368 -> 0 bytes .../CCMonomorphic/index.html | 2 - .../index-generated.mld | 2 - dev/containers.monomorphic/index.html | 3 -- dev/containers.monomorphic/page-index.odoc | Bin 279 -> 0 bytes dev/containers.sexp/CCSexp.odoc | Bin 3528 -> 0 bytes dev/containers.sexp/CCSexp/Decoder/index.html | 3 -- dev/containers.sexp/CCSexp/index.html | 8 ---- dev/containers.sexp/CCSexp_lex.odoc | Bin 1057 -> 0 bytes dev/containers.sexp/CCSexp_lex/index.html | 2 - dev/containers.sexp/index-generated.mld | 2 - dev/containers.sexp/index.html | 3 -- dev/containers.sexp/page-index.odoc | Bin 267 -> 0 bytes dev/containers.thread/CCBlockingQueue.odoc | Bin 1877 -> 0 bytes .../CCBlockingQueue/index.html | 9 ----- dev/containers.thread/CCLock.odoc | Bin 3059 -> 0 bytes .../CCLock/LockRef/index.html | 2 - dev/containers.thread/CCLock/index.html | 10 ----- dev/containers.thread/CCPool.odoc | Bin 5814 -> 0 bytes .../CCPool/Make/Fut/Infix/index.html | 2 - .../CCPool/Make/Fut/index.html | 22 ---------- .../CCPool/Make/argument-1-P/index.html | 2 - dev/containers.thread/CCPool/Make/index.html | 3 -- dev/containers.thread/CCPool/index.html | 2 - .../CCPool/module-type-PARAM/index.html | 2 - dev/containers.thread/CCSemaphore.odoc | Bin 1265 -> 0 bytes dev/containers.thread/CCSemaphore/index.html | 6 --- dev/containers.thread/CCThread.odoc | Bin 2021 -> 0 bytes dev/containers.thread/CCThread/Arr/index.html | 3 -- .../CCThread/Barrier/index.html | 6 --- dev/containers.thread/CCThread/index.html | 2 - dev/containers.thread/CCTimer.odoc | Bin 1645 -> 0 bytes dev/containers.thread/CCTimer/index.html | 6 --- dev/containers.thread/index-generated.mld | 2 - dev/containers.thread/index.html | 3 -- dev/containers.thread/page-index.odoc | Bin 334 -> 0 bytes dev/containers.top/Containers_top/index.html | 2 - dev/containers.top/containers_top.odoc | Bin 1331 -> 0 bytes dev/containers.top/index-generated.mld | 2 - dev/containers.top/index.html | 3 -- dev/containers.top/page-index.odoc | Bin 256 -> 0 bytes dev/containers.unix/CCUnix.odoc | Bin 5475 -> 0 bytes dev/containers.unix/CCUnix/Infix/index.html | 2 - dev/containers.unix/CCUnix/index.html | 18 --------- dev/containers.unix/index-generated.mld | 2 - dev/containers.unix/index.html | 3 -- dev/containers.unix/page-index.odoc | Bin 251 -> 0 bytes dev/containers/CCArray.odoc | Bin 11872 -> 0 bytes .../CCArray/.dune-keep} | 0 dev/containers/CCArray/Infix/index.html | 2 + dev/containers/CCArray/index.html | 2 +- .../CCArray/module-type-MONO_ARRAY/index.html | 2 +- dev/containers/CCArrayLabels.odoc | Bin 12065 -> 0 bytes .../CCArrayLabels/.dune-keep} | 0 .../CCArrayLabels/Floatarray/index.html | 2 + dev/containers/CCArrayLabels/Infix/index.html | 2 + dev/containers/CCArrayLabels/index.html | 2 +- .../module-type-MONO_ARRAY/index.html | 2 +- dev/containers/CCArray_slice.odoc | Bin 9619 -> 0 bytes .../CCArray_slice/.dune-keep} | 0 dev/containers/CCArray_slice/index.html | 2 +- .../CCArray_sliceLabels/.dune-keep} | 0 dev/containers/CCArray_sliceLabels/index.html | 2 + .../CCBV/.dune-keep} | 0 dev/containers/CCBV/index.html | 2 + .../CCBijection/.dune-keep} | 0 .../CCBijection/Make/argument-1-L/index.html | 2 + .../CCBijection/Make/argument-2-R/index.html | 2 + dev/containers/CCBijection/Make/index.html | 2 + dev/containers/CCBijection/index.html | 2 + .../module-type-OrderedType/index.html | 2 + .../CCBijection/module-type-S/index.html | 2 + .../CCBitField/.dune-keep} | 0 .../CCBitField/Make/argument-1-X/index.html | 2 + dev/containers/CCBitField/Make/index.html | 2 + dev/containers/CCBitField/index.html | 12 ++++++ .../CCBitField/module-type-S/index.html | 2 + .../CCBlockingQueue/.dune-keep} | 0 dev/containers/CCBlockingQueue/index.html | 2 + dev/containers/CCBool.odoc | Bin 866 -> 0 bytes .../CCBool/.dune-keep} | 0 dev/containers/CCBool/index.html | 2 +- .../CCCache/.dune-keep} | 0 dev/containers/CCCache/index.html | 15 +++++++ dev/containers/CCChar.odoc | Bin 2236 -> 0 bytes .../CCChar/.dune-keep} | 0 dev/containers/CCChar/index.html | 2 +- .../CCDeque/.dune-keep} | 0 dev/containers/CCDeque/index.html | 2 + dev/containers/CCEqual.odoc | Bin 1602 -> 0 bytes .../CCEqual/.dune-keep} | 0 dev/containers/CCEqual/Infix/index.html | 2 +- dev/containers/CCEqual/index.html | 2 +- .../CCEqualLabels/.dune-keep} | 0 dev/containers/CCEqualLabels/Infix/index.html | 2 + dev/containers/CCEqualLabels/index.html | 2 + .../CCFQueue/.dune-keep} | 0 dev/containers/CCFQueue/index.html | 2 + dev/containers/CCFloat.odoc | Bin 4264 -> 0 bytes .../CCFloat/.dune-keep} | 0 dev/containers/CCFloat/Infix/index.html | 2 +- dev/containers/CCFloat/index.html | 2 +- dev/containers/CCFormat.odoc | Bin 18641 -> 0 bytes .../CCFormat/.dune-keep} | 0 dev/containers/CCFormat/Dump/index.html | 2 +- dev/containers/CCFormat/index.html | 6 +-- dev/containers/CCFun.odoc | Bin 3536 -> 0 bytes .../CCFun/.dune-keep} | 0 .../CCFun/Monad/argument-1-X/index.html | 2 +- dev/containers/CCFun/Monad/index.html | 2 +- dev/containers/CCFun/index.html | 6 +-- .../CCFun_vec/.dune-keep} | 0 dev/containers/CCFun_vec/index.html | 2 + .../CCGraph/.dune-keep} | 0 dev/containers/CCGraph/Dot/index.html | 2 + dev/containers/CCGraph/Lazy_tree/index.html | 2 + dev/containers/CCGraph/Map/index.html | 2 + dev/containers/CCGraph/Seq/index.html | 2 + .../CCGraph/Traverse/Event/index.html | 2 + dev/containers/CCGraph/Traverse/index.html | 2 + dev/containers/CCGraph/index.html | 7 ++++ .../CCGraph/module-type-MAP/index.html | 2 + dev/containers/CCHash.odoc | Bin 2950 -> 0 bytes .../CCHash/.dune-keep} | 0 dev/containers/CCHash/index.html | 2 +- .../CCHashSet/.dune-keep} | 0 .../CCHashSet/Make/argument-1-E/index.html | 2 + dev/containers/CCHashSet/Make/index.html | 2 + dev/containers/CCHashSet/index.html | 2 + .../CCHashSet/module-type-ELEMENT/index.html | 2 + .../CCHashSet/module-type-S/index.html | 2 + .../CCHashTrie/.dune-keep} | 0 .../CCHashTrie/Make/argument-1-K/index.html | 2 + dev/containers/CCHashTrie/Make/index.html | 2 + .../CCHashTrie/Transient/index.html | 2 + dev/containers/CCHashTrie/index.html | 2 + .../CCHashTrie/module-type-KEY/index.html | 2 + .../CCHashTrie/module-type-S/index.html | 2 + dev/containers/CCHashtbl.odoc | Bin 9687 -> 0 bytes .../CCHashtbl/.dune-keep} | 0 dev/containers/CCHashtbl/Poly/index.html | 2 +- dev/containers/CCHashtbl/index.html | 2 +- .../CCHashtbl/module-type-S/index.html | 2 +- dev/containers/CCHeap.odoc | Bin 6505 -> 0 bytes .../CCHeap/.dune-keep} | 0 .../CCHeap/Make/argument-1-E/index.html | 2 +- dev/containers/CCHeap/Make/index.html | 2 +- .../Make_from_compare/argument-1-E/index.html | 2 + .../CCHeap/Make_from_compare/index.html | 2 + dev/containers/CCHeap/index.html | 2 +- .../CCHeap/module-type-PARTIAL_ORD/index.html | 2 +- .../CCHeap/module-type-S/index.html | 2 +- .../CCHeap/module-type-TOTAL_ORD/index.html | 2 + .../CCHet/.dune-keep} | 0 dev/containers/CCHet/Key/index.html | 2 + dev/containers/CCHet/Map/index.html | 2 + dev/containers/CCHet/Tbl/index.html | 2 + dev/containers/CCHet/index.html | 2 + dev/containers/CCIO.odoc | Bin 7528 -> 0 bytes .../CCIO/.dune-keep} | 0 dev/containers/CCIO/File/index.html | 2 +- dev/containers/CCIO/index.html | 15 +++++-- .../CCImmutArray/.dune-keep} | 0 dev/containers/CCImmutArray/index.html | 2 + dev/containers/CCInt.odoc | Bin 4526 -> 0 bytes .../CCInt/.dune-keep} | 0 dev/containers/CCInt/Infix/index.html | 2 +- dev/containers/CCInt/index.html | 2 +- dev/containers/CCInt32.odoc | Bin 7236 -> 0 bytes .../CCInt32/.dune-keep} | 0 dev/containers/CCInt32/Infix/index.html | 2 +- dev/containers/CCInt32/index.html | 2 +- dev/containers/CCInt64.odoc | Bin 8822 -> 0 bytes .../CCInt64/.dune-keep} | 0 dev/containers/CCInt64/Infix/index.html | 2 +- dev/containers/CCInt64/index.html | 2 +- .../CCIntMap/.dune-keep} | 0 dev/containers/CCIntMap/index.html | 2 + .../CCKList/.dune-keep} | 0 dev/containers/CCKList/Infix/index.html | 2 + .../CCKList/Traverse/argument-1-M/index.html | 2 + dev/containers/CCKList/Traverse/index.html | 2 + dev/containers/CCKList/index.html | 2 + .../CCKList/module-type-MONAD/index.html | 2 + .../CCKTree/.dune-keep} | 0 dev/containers/CCKTree/Dot/index.html | 2 + .../CCKTree/class-type-pset/index.html | 2 + dev/containers/CCKTree/index.html | 15 +++++++ .../CCLazy_list/.dune-keep} | 0 dev/containers/CCLazy_list/Infix/index.html | 2 + dev/containers/CCLazy_list/index.html | 2 + dev/containers/CCList.odoc | Bin 26812 -> 0 bytes .../CCList/.dune-keep} | 0 dev/containers/CCList/Assoc/index.html | 2 +- dev/containers/CCList/Infix/index.html | 2 +- dev/containers/CCList/Ref/index.html | 2 +- .../CCList/Traverse/argument-1-M/index.html | 2 +- dev/containers/CCList/Traverse/index.html | 2 +- dev/containers/CCList/index.html | 4 +- .../CCList/module-type-MONAD/index.html | 2 +- dev/containers/CCListLabels.odoc | Bin 21796 -> 0 bytes .../CCListLabels/.dune-keep} | 0 dev/containers/CCListLabels/Assoc/index.html | 2 +- dev/containers/CCListLabels/Infix/index.html | 2 +- dev/containers/CCListLabels/Ref/index.html | 2 +- .../Traverse/argument-1-M/index.html | 2 +- .../CCListLabels/Traverse/index.html | 2 +- dev/containers/CCListLabels/index.html | 4 +- .../CCListLabels/module-type-MONAD/index.html | 2 +- .../CCLock/.dune-keep} | 0 dev/containers/CCLock/LockRef/index.html | 2 + dev/containers/CCLock/index.html | 2 + dev/containers/CCMap.odoc | Bin 5454 -> 0 bytes .../CCMap/.dune-keep} | 0 dev/containers/CCMap/index.html | 2 +- dev/containers/CCMap/module-type-S/index.html | 2 +- .../CCMixmap/.dune-keep} | 0 .../CCMixmap/Make/argument-1-X/index.html | 2 + dev/containers/CCMixmap/Make/index.html | 2 + dev/containers/CCMixmap/index.html | 19 +++++++++ .../CCMixmap/module-type-ORD/index.html | 2 + .../CCMixmap/module-type-S/index.html | 2 + .../.jbuilder-keep => CCMixset/.dune-keep} | 0 dev/containers/CCMixset/index.html | 14 +++++++ .../.jbuilder-keep => CCMixtbl/.dune-keep} | 0 dev/containers/CCMixtbl/index.html | 22 ++++++++++ .../.dune-keep} | 0 dev/containers/CCMonomorphic/index.html | 2 + .../.dune-keep} | 0 dev/containers/CCMonomorphicShims_/index.html | 2 + .../.jbuilder-keep => CCMultiMap/.dune-keep} | 0 .../CCMultiMap/Make/argument-1-K/index.html | 2 + .../CCMultiMap/Make/argument-2-V/index.html | 2 + dev/containers/CCMultiMap/Make/index.html | 2 + .../MakeBidir/argument-1-L/index.html | 2 + .../MakeBidir/argument-2-R/index.html | 2 + .../CCMultiMap/MakeBidir/index.html | 2 + dev/containers/CCMultiMap/index.html | 2 + .../CCMultiMap/module-type-BIDIR/index.html | 2 + .../module-type-OrderedType/index.html | 2 + .../CCMultiMap/module-type-S/index.html | 2 + .../.jbuilder-keep => CCMultiSet/.dune-keep} | 0 dev/containers/CCMultiSet/Make/index.html | 2 + dev/containers/CCMultiSet/index.html | 2 + .../CCMultiSet/module-type-S/index.html | 2 + dev/containers/CCNativeint.odoc | Bin 7521 -> 0 bytes .../.jbuilder-keep => CCNativeint/.dune-keep} | 0 dev/containers/CCNativeint/Infix/index.html | 2 +- dev/containers/CCNativeint/index.html | 2 +- dev/containers/CCOpt.odoc | Bin 6412 -> 0 bytes .../.jbuilder-keep => CCOpt/.dune-keep} | 0 dev/containers/CCOpt/Infix/index.html | 2 +- dev/containers/CCOpt/index.html | 2 +- dev/containers/CCOrd.odoc | Bin 2532 -> 0 bytes .../.jbuilder-keep => CCOrd/.dune-keep} | 0 dev/containers/CCOrd/Infix/index.html | 2 +- dev/containers/CCOrd/index.html | 10 ++--- dev/containers/CCPair.odoc | Bin 2542 -> 0 bytes .../.jbuilder-keep => CCPair/.dune-keep} | 0 dev/containers/CCPair/index.html | 2 +- dev/containers/CCParse.odoc | Bin 10061 -> 0 bytes .../.jbuilder-keep => CCParse/.dune-keep} | 0 dev/containers/CCParse/Infix/index.html | 2 +- dev/containers/CCParse/U/index.html | 2 +- dev/containers/CCParse/index.html | 4 +- .../.dune-keep} | 0 dev/containers/CCPersistentArray/index.html | 2 + .../.dune-keep} | 0 .../Make/argument-1-H/index.html | 2 + .../CCPersistentHashtbl/Make/index.html | 2 + dev/containers/CCPersistentHashtbl/index.html | 2 + .../module-type-HashedType/index.html | 2 + .../module-type-S/index.html | 2 + .../.jbuilder-keep => CCPool/.dune-keep} | 0 .../CCPool/Make/Fut/Infix/index.html | 2 + dev/containers/CCPool/Make/Fut/index.html | 2 + .../CCPool/Make/argument-1-P/index.html | 2 + dev/containers/CCPool/Make/index.html | 2 + dev/containers/CCPool/index.html | 2 + .../CCPool/module-type-PARAM/index.html | 2 + .../.jbuilder-keep => CCRAL/.dune-keep} | 0 dev/containers/CCRAL/Infix/index.html | 2 + dev/containers/CCRAL/index.html | 2 + dev/containers/CCRandom.odoc | Bin 6138 -> 0 bytes .../.jbuilder-keep => CCRandom/.dune-keep} | 0 dev/containers/CCRandom/index.html | 4 +- dev/containers/CCRef.odoc | Bin 1662 -> 0 bytes .../.jbuilder-keep => CCRef/.dune-keep} | 0 dev/containers/CCRef/index.html | 2 +- dev/containers/CCResult.odoc | Bin 9191 -> 0 bytes .../.jbuilder-keep => CCResult/.dune-keep} | 0 dev/containers/CCResult/Infix/index.html | 2 +- .../CCResult/Traverse/argument-1-M/index.html | 2 +- dev/containers/CCResult/Traverse/index.html | 2 +- dev/containers/CCResult/index.html | 2 +- .../CCResult/module-type-MONAD/index.html | 2 +- .../.dune-keep} | 0 .../CCRingBuffer/Array/Byte/index.html | 2 + .../Array/Make/argument-1-Elt/index.html | 2 + .../CCRingBuffer/Array/Make/index.html | 2 + dev/containers/CCRingBuffer/Array/index.html | 2 + .../Array/module-type-S/index.html | 2 + dev/containers/CCRingBuffer/Byte/index.html | 2 + .../CCRingBuffer/Make/Array/index.html | 2 + .../CCRingBuffer/Make/argument-1-X/index.html | 2 + dev/containers/CCRingBuffer/Make/index.html | 2 + .../MakeFromArray/argument-1-A/index.html | 2 + .../CCRingBuffer/MakeFromArray/index.html | 2 + dev/containers/CCRingBuffer/index.html | 2 + .../module-type-S/Array/index.html | 2 + .../CCRingBuffer/module-type-S/index.html | 2 + .../.jbuilder-keep => CCSemaphore/.dune-keep} | 0 dev/containers/CCSemaphore/index.html | 2 + dev/containers/CCSet.odoc | Bin 3841 -> 0 bytes .../.jbuilder-keep => CCSet/.dune-keep} | 0 dev/containers/CCSet/index.html | 2 +- dev/containers/CCSet/module-type-S/index.html | 2 +- .../.jbuilder-keep => CCSexp/.dune-keep} | 0 dev/containers/CCSexp/Decoder/index.html | 2 + dev/containers/CCSexp/Make/Decoder/index.html | 2 + .../CCSexp/Make/argument-1-Sexp/index.html | 2 + dev/containers/CCSexp/Make/index.html | 2 + dev/containers/CCSexp/index.html | 2 + .../CCSexp/module-type-S/Decoder/index.html | 2 + .../CCSexp/module-type-S/index.html | 2 + .../CCSexp/module-type-SEXP/index.html | 2 + .../.jbuilder-keep => CCSexp_intf/.dune-keep} | 0 dev/containers/CCSexp_intf/index.html | 2 + .../module-type-S/Decoder/index.html | 2 + .../CCSexp_intf/module-type-S/index.html | 2 + .../CCSexp_intf/module-type-SEXP/index.html | 2 + .../.jbuilder-keep => CCSexp_lex/.dune-keep} | 0 dev/containers/CCSexp_lex/index.html | 2 + .../.dune-keep} | 0 dev/containers/CCShimsArray_/index.html | 2 + .../.dune-keep} | 0 dev/containers/CCShimsFormat_/index.html | 2 + .../.jbuilder-keep => CCShimsFun_/.dune-keep} | 0 dev/containers/CCShimsFun_/index.html | 2 + .../.dune-keep} | 0 dev/containers/CCShimsList_/index.html | 2 + .../.jbuilder-keep => CCShims_/.dune-keep} | 0 dev/containers/CCShims_/index.html | 2 + .../.dune-keep} | 0 .../CCSimple_queue/Infix/index.html | 2 + dev/containers/CCSimple_queue/index.html | 2 + dev/containers/CCString.odoc | Bin 17813 -> 0 bytes .../.jbuilder-keep => CCString/.dune-keep} | 0 dev/containers/CCString/Find/index.html | 2 +- dev/containers/CCString/Split/index.html | 2 +- dev/containers/CCString/Sub/index.html | 2 +- dev/containers/CCString/index.html | 2 +- .../CCString/module-type-S/index.html | 2 +- .../.dune-keep} | 0 dev/containers/CCStringLabels/Find/index.html | 2 + .../CCStringLabels/Split/index.html | 2 + dev/containers/CCStringLabels/Sub/index.html | 2 + dev/containers/CCStringLabels/index.html | 2 + .../CCStringLabels/module-type-S/index.html | 2 + dev/containers/CCThread/.dune-keep | 0 dev/containers/CCThread/Arr/index.html | 2 + dev/containers/CCThread/Barrier/index.html | 2 + dev/containers/CCThread/index.html | 2 + dev/containers/CCTimer/.dune-keep | 0 dev/containers/CCTimer/index.html | 2 + dev/containers/CCTrie/.dune-keep | 0 .../CCTrie/Make/argument-1-W/index.html | 2 + dev/containers/CCTrie/Make/index.html | 2 + .../CCTrie/MakeArray/argument-1-X/index.html | 2 + dev/containers/CCTrie/MakeArray/index.html | 2 + .../CCTrie/MakeList/argument-1-X/index.html | 2 + dev/containers/CCTrie/MakeList/index.html | 2 + dev/containers/CCTrie/String/index.html | 2 + dev/containers/CCTrie/index.html | 2 + .../CCTrie/module-type-ORDERED/index.html | 2 + .../CCTrie/module-type-S/index.html | 2 + .../CCTrie/module-type-WORD/index.html | 2 + dev/containers/CCUnix/.dune-keep | 0 dev/containers/CCUnix/Infix/index.html | 2 + dev/containers/CCUnix/index.html | 2 + dev/containers/CCUtf8_string.odoc | Bin 2434 -> 0 bytes dev/containers/CCUtf8_string/.dune-keep | 0 dev/containers/CCUtf8_string/index.html | 2 +- dev/containers/CCVector.odoc | Bin 10041 -> 0 bytes dev/containers/CCVector/.dune-keep | 0 dev/containers/CCVector/index.html | 2 +- dev/containers/CCWBTree/.dune-keep | 0 .../CCWBTree/Make/argument-1-X/index.html | 2 + dev/containers/CCWBTree/Make/index.html | 2 + .../CCWBTree/MakeFull/argument-1-X/index.html | 2 + dev/containers/CCWBTree/MakeFull/index.html | 2 + dev/containers/CCWBTree/index.html | 2 + .../CCWBTree/module-type-KEY/index.html | 2 + .../CCWBTree/module-type-ORD/index.html | 2 + .../CCWBTree/module-type-S/index.html | 2 + dev/containers/CCZipper/.dune-keep | 0 dev/containers/CCZipper/index.html | 2 + dev/containers/Containers/.dune-keep | 0 .../Containers/Hashtbl/Make/index.html | 2 +- .../MakeSeeded/argument-1-H/index.html | 2 +- .../Containers/Hashtbl/MakeSeeded/index.html | 2 +- dev/containers/Containers/Hashtbl/index.html | 2 +- .../Hashtbl/module-type-HashedType/index.html | 2 +- .../Hashtbl/module-type-S'/index.html | 2 +- .../Hashtbl/module-type-S/index.html | 2 +- .../module-type-SeededHashedType/index.html | 2 +- .../Hashtbl/module-type-SeededS/index.html | 2 +- dev/containers/Containers/index.html | 2 +- dev/containers/ContainersLabels/.dune-keep | 0 .../ContainersLabels/Hashtbl/Make/index.html | 2 + .../MakeSeeded/argument-1-H/index.html | 2 + .../Hashtbl/MakeSeeded/index.html | 2 + .../ContainersLabels/Hashtbl/index.html | 2 + .../Hashtbl/module-type-HashedType/index.html | 2 + .../Hashtbl/module-type-S'/index.html | 2 + .../Hashtbl/module-type-S/index.html | 2 + .../module-type-SeededHashedType/index.html | 2 + .../Hashtbl/module-type-SeededS/index.html | 2 + dev/containers/ContainersLabels/index.html | 2 + dev/containers/Containers_top/.dune-keep | 0 dev/containers/Containers_top/index.html | 2 + dev/containers/containers.odoc | Bin 9175 -> 0 bytes dev/containers/index-generated.mld | 2 - dev/containers/index.html | 2 +- dev/containers/page-index.odoc | Bin 654 -> 0 bytes dev/highlight.pack.js | 2 + dev/index.html | 2 +- dev/odoc.css | 2 +- 577 files changed, 553 insertions(+), 981 deletions(-) delete mode 100644 dev/containers.data/CCBV.odoc delete mode 100644 dev/containers.data/CCBV/index.html delete mode 100644 dev/containers.data/CCBijection.odoc delete mode 100644 dev/containers.data/CCBijection/Make/argument-1-L/index.html delete mode 100644 dev/containers.data/CCBijection/Make/argument-2-R/index.html delete mode 100644 dev/containers.data/CCBijection/Make/index.html delete mode 100644 dev/containers.data/CCBijection/index.html delete mode 100644 dev/containers.data/CCBijection/module-type-OrderedType/index.html delete mode 100644 dev/containers.data/CCBijection/module-type-S/index.html delete mode 100644 dev/containers.data/CCBitField.odoc delete mode 100644 dev/containers.data/CCBitField/Make/argument-1-X/index.html delete mode 100644 dev/containers.data/CCBitField/Make/index.html delete mode 100644 dev/containers.data/CCBitField/index.html delete mode 100644 dev/containers.data/CCBitField/module-type-S/index.html delete mode 100644 dev/containers.data/CCCache.odoc delete mode 100644 dev/containers.data/CCCache/index.html delete mode 100644 dev/containers.data/CCDeque.odoc delete mode 100644 dev/containers.data/CCDeque/index.html delete mode 100644 dev/containers.data/CCFQueue.odoc delete mode 100644 dev/containers.data/CCFQueue/index.html delete mode 100644 dev/containers.data/CCFun_vec.odoc delete mode 100644 dev/containers.data/CCFun_vec/index.html delete mode 100644 dev/containers.data/CCGraph.odoc delete mode 100644 dev/containers.data/CCGraph/Dot/index.html delete mode 100644 dev/containers.data/CCGraph/Lazy_tree/index.html delete mode 100644 dev/containers.data/CCGraph/Map/index.html delete mode 100644 dev/containers.data/CCGraph/Seq/index.html delete mode 100644 dev/containers.data/CCGraph/Traverse/Event/index.html delete mode 100644 dev/containers.data/CCGraph/Traverse/index.html delete mode 100644 dev/containers.data/CCGraph/index.html delete mode 100644 dev/containers.data/CCGraph/module-type-MAP/index.html delete mode 100644 dev/containers.data/CCHashSet.odoc delete mode 100644 dev/containers.data/CCHashSet/Make/argument-1-E/index.html delete mode 100644 dev/containers.data/CCHashSet/Make/index.html delete mode 100644 dev/containers.data/CCHashSet/index.html delete mode 100644 dev/containers.data/CCHashSet/module-type-ELEMENT/index.html delete mode 100644 dev/containers.data/CCHashSet/module-type-S/index.html delete mode 100644 dev/containers.data/CCHashTrie.odoc delete mode 100644 dev/containers.data/CCHashTrie/Make/argument-1-K/index.html delete mode 100644 dev/containers.data/CCHashTrie/Make/index.html delete mode 100644 dev/containers.data/CCHashTrie/Transient/index.html delete mode 100644 dev/containers.data/CCHashTrie/index.html delete mode 100644 dev/containers.data/CCHashTrie/module-type-KEY/index.html delete mode 100644 dev/containers.data/CCHashTrie/module-type-S/index.html delete mode 100644 dev/containers.data/CCHet.odoc delete mode 100644 dev/containers.data/CCHet/Key/index.html delete mode 100644 dev/containers.data/CCHet/Map/index.html delete mode 100644 dev/containers.data/CCHet/Tbl/index.html delete mode 100644 dev/containers.data/CCHet/index.html delete mode 100644 dev/containers.data/CCImmutArray.odoc delete mode 100644 dev/containers.data/CCImmutArray/index.html delete mode 100644 dev/containers.data/CCIntMap.odoc delete mode 100644 dev/containers.data/CCIntMap/index.html delete mode 100644 dev/containers.data/CCMixmap.odoc delete mode 100644 dev/containers.data/CCMixmap/Make/argument-1-X/index.html delete mode 100644 dev/containers.data/CCMixmap/Make/index.html delete mode 100644 dev/containers.data/CCMixmap/index.html delete mode 100644 dev/containers.data/CCMixmap/module-type-ORD/index.html delete mode 100644 dev/containers.data/CCMixmap/module-type-S/index.html delete mode 100644 dev/containers.data/CCMixset.odoc delete mode 100644 dev/containers.data/CCMixset/index.html delete mode 100644 dev/containers.data/CCMixtbl.odoc delete mode 100644 dev/containers.data/CCMixtbl/index.html delete mode 100644 dev/containers.data/CCMultiMap.odoc delete mode 100644 dev/containers.data/CCMultiMap/Make/argument-1-K/index.html delete mode 100644 dev/containers.data/CCMultiMap/Make/argument-2-V/index.html delete mode 100644 dev/containers.data/CCMultiMap/Make/index.html delete mode 100644 dev/containers.data/CCMultiMap/MakeBidir/argument-1-L/index.html delete mode 100644 dev/containers.data/CCMultiMap/MakeBidir/argument-2-R/index.html delete mode 100644 dev/containers.data/CCMultiMap/MakeBidir/index.html delete mode 100644 dev/containers.data/CCMultiMap/index.html delete mode 100644 dev/containers.data/CCMultiMap/module-type-BIDIR/index.html delete mode 100644 dev/containers.data/CCMultiMap/module-type-OrderedType/index.html delete mode 100644 dev/containers.data/CCMultiMap/module-type-S/index.html delete mode 100644 dev/containers.data/CCMultiSet.odoc delete mode 100644 dev/containers.data/CCMultiSet/Make/index.html delete mode 100644 dev/containers.data/CCMultiSet/index.html delete mode 100644 dev/containers.data/CCMultiSet/module-type-S/index.html delete mode 100644 dev/containers.data/CCPersistentArray.odoc delete mode 100644 dev/containers.data/CCPersistentArray/index.html delete mode 100644 dev/containers.data/CCPersistentHashtbl.odoc delete mode 100644 dev/containers.data/CCPersistentHashtbl/Make/argument-1-H/index.html delete mode 100644 dev/containers.data/CCPersistentHashtbl/Make/index.html delete mode 100644 dev/containers.data/CCPersistentHashtbl/index.html delete mode 100644 dev/containers.data/CCPersistentHashtbl/module-type-HashedType/index.html delete mode 100644 dev/containers.data/CCPersistentHashtbl/module-type-S/index.html delete mode 100644 dev/containers.data/CCRAL.odoc delete mode 100644 dev/containers.data/CCRAL/Infix/index.html delete mode 100644 dev/containers.data/CCRAL/index.html delete mode 100644 dev/containers.data/CCRingBuffer.odoc delete mode 100644 dev/containers.data/CCRingBuffer/Array/Byte/index.html delete mode 100644 dev/containers.data/CCRingBuffer/Array/Make/argument-1-Elt/index.html delete mode 100644 dev/containers.data/CCRingBuffer/Array/Make/index.html delete mode 100644 dev/containers.data/CCRingBuffer/Array/index.html delete mode 100644 dev/containers.data/CCRingBuffer/Array/module-type-S/index.html delete mode 100644 dev/containers.data/CCRingBuffer/Byte/index.html delete mode 100644 dev/containers.data/CCRingBuffer/Make/Array/index.html delete mode 100644 dev/containers.data/CCRingBuffer/Make/argument-1-X/index.html delete mode 100644 dev/containers.data/CCRingBuffer/Make/index.html delete mode 100644 dev/containers.data/CCRingBuffer/MakeFromArray/argument-1-A/index.html delete mode 100644 dev/containers.data/CCRingBuffer/MakeFromArray/index.html delete mode 100644 dev/containers.data/CCRingBuffer/index.html delete mode 100644 dev/containers.data/CCRingBuffer/module-type-S/Array/index.html delete mode 100644 dev/containers.data/CCRingBuffer/module-type-S/index.html delete mode 100644 dev/containers.data/CCSimple_queue.odoc delete mode 100644 dev/containers.data/CCSimple_queue/Infix/index.html delete mode 100644 dev/containers.data/CCSimple_queue/index.html delete mode 100644 dev/containers.data/CCTrie.odoc delete mode 100644 dev/containers.data/CCTrie/Make/argument-1-W/index.html delete mode 100644 dev/containers.data/CCTrie/Make/index.html delete mode 100644 dev/containers.data/CCTrie/MakeArray/argument-1-X/index.html delete mode 100644 dev/containers.data/CCTrie/MakeArray/index.html delete mode 100644 dev/containers.data/CCTrie/MakeList/argument-1-X/index.html delete mode 100644 dev/containers.data/CCTrie/MakeList/index.html delete mode 100644 dev/containers.data/CCTrie/String/index.html delete mode 100644 dev/containers.data/CCTrie/index.html delete mode 100644 dev/containers.data/CCTrie/module-type-ORDERED/index.html delete mode 100644 dev/containers.data/CCTrie/module-type-S/index.html delete mode 100644 dev/containers.data/CCTrie/module-type-WORD/index.html delete mode 100644 dev/containers.data/CCWBTree.odoc delete mode 100644 dev/containers.data/CCWBTree/Make/argument-1-X/index.html delete mode 100644 dev/containers.data/CCWBTree/Make/index.html delete mode 100644 dev/containers.data/CCWBTree/MakeFull/argument-1-X/index.html delete mode 100644 dev/containers.data/CCWBTree/MakeFull/index.html delete mode 100644 dev/containers.data/CCWBTree/index.html delete mode 100644 dev/containers.data/CCWBTree/module-type-KEY/index.html delete mode 100644 dev/containers.data/CCWBTree/module-type-ORD/index.html delete mode 100644 dev/containers.data/CCWBTree/module-type-S/index.html delete mode 100644 dev/containers.data/CCZipper.odoc delete mode 100644 dev/containers.data/CCZipper/index.html delete mode 100644 dev/containers.data/index-generated.mld delete mode 100644 dev/containers.data/index.html delete mode 100644 dev/containers.data/page-index.odoc delete mode 100644 dev/containers.iter/CCKList.odoc delete mode 100644 dev/containers.iter/CCKList/Infix/index.html delete mode 100644 dev/containers.iter/CCKList/Traverse/argument-1-M/index.html delete mode 100644 dev/containers.iter/CCKList/Traverse/index.html delete mode 100644 dev/containers.iter/CCKList/index.html delete mode 100644 dev/containers.iter/CCKList/module-type-MONAD/index.html delete mode 100644 dev/containers.iter/CCKTree.odoc delete mode 100644 dev/containers.iter/CCKTree/Dot/index.html delete mode 100644 dev/containers.iter/CCKTree/class-type-pset/index.html delete mode 100644 dev/containers.iter/CCKTree/index.html delete mode 100644 dev/containers.iter/CCLazy_list.odoc delete mode 100644 dev/containers.iter/CCLazy_list/Infix/index.html delete mode 100644 dev/containers.iter/CCLazy_list/index.html delete mode 100644 dev/containers.iter/index-generated.mld delete mode 100644 dev/containers.iter/index.html delete mode 100644 dev/containers.iter/page-index.odoc delete mode 100644 dev/containers.monomorphic/CCMonomorphic.odoc delete mode 100644 dev/containers.monomorphic/CCMonomorphic/index.html delete mode 100644 dev/containers.monomorphic/index-generated.mld delete mode 100644 dev/containers.monomorphic/index.html delete mode 100644 dev/containers.monomorphic/page-index.odoc delete mode 100644 dev/containers.sexp/CCSexp.odoc delete mode 100644 dev/containers.sexp/CCSexp/Decoder/index.html delete mode 100644 dev/containers.sexp/CCSexp/index.html delete mode 100644 dev/containers.sexp/CCSexp_lex.odoc delete mode 100644 dev/containers.sexp/CCSexp_lex/index.html delete mode 100644 dev/containers.sexp/index-generated.mld delete mode 100644 dev/containers.sexp/index.html delete mode 100644 dev/containers.sexp/page-index.odoc delete mode 100644 dev/containers.thread/CCBlockingQueue.odoc delete mode 100644 dev/containers.thread/CCBlockingQueue/index.html delete mode 100644 dev/containers.thread/CCLock.odoc delete mode 100644 dev/containers.thread/CCLock/LockRef/index.html delete mode 100644 dev/containers.thread/CCLock/index.html delete mode 100644 dev/containers.thread/CCPool.odoc delete mode 100644 dev/containers.thread/CCPool/Make/Fut/Infix/index.html delete mode 100644 dev/containers.thread/CCPool/Make/Fut/index.html delete mode 100644 dev/containers.thread/CCPool/Make/argument-1-P/index.html delete mode 100644 dev/containers.thread/CCPool/Make/index.html delete mode 100644 dev/containers.thread/CCPool/index.html delete mode 100644 dev/containers.thread/CCPool/module-type-PARAM/index.html delete mode 100644 dev/containers.thread/CCSemaphore.odoc delete mode 100644 dev/containers.thread/CCSemaphore/index.html delete mode 100644 dev/containers.thread/CCThread.odoc delete mode 100644 dev/containers.thread/CCThread/Arr/index.html delete mode 100644 dev/containers.thread/CCThread/Barrier/index.html delete mode 100644 dev/containers.thread/CCThread/index.html delete mode 100644 dev/containers.thread/CCTimer.odoc delete mode 100644 dev/containers.thread/CCTimer/index.html delete mode 100644 dev/containers.thread/index-generated.mld delete mode 100644 dev/containers.thread/index.html delete mode 100644 dev/containers.thread/page-index.odoc delete mode 100644 dev/containers.top/Containers_top/index.html delete mode 100644 dev/containers.top/containers_top.odoc delete mode 100644 dev/containers.top/index-generated.mld delete mode 100644 dev/containers.top/index.html delete mode 100644 dev/containers.top/page-index.odoc delete mode 100644 dev/containers.unix/CCUnix.odoc delete mode 100644 dev/containers.unix/CCUnix/Infix/index.html delete mode 100644 dev/containers.unix/CCUnix/index.html delete mode 100644 dev/containers.unix/index-generated.mld delete mode 100644 dev/containers.unix/index.html delete mode 100644 dev/containers.unix/page-index.odoc delete mode 100644 dev/containers/CCArray.odoc rename dev/{containers.data/CCBV/.jbuilder-keep => containers/CCArray/.dune-keep} (100%) create mode 100644 dev/containers/CCArray/Infix/index.html delete mode 100644 dev/containers/CCArrayLabels.odoc rename dev/{containers.data/CCBijection/.jbuilder-keep => containers/CCArrayLabels/.dune-keep} (100%) create mode 100644 dev/containers/CCArrayLabels/Floatarray/index.html create mode 100644 dev/containers/CCArrayLabels/Infix/index.html delete mode 100644 dev/containers/CCArray_slice.odoc rename dev/{containers.data/CCBitField/.jbuilder-keep => containers/CCArray_slice/.dune-keep} (100%) rename dev/{containers.data/CCCache/.jbuilder-keep => containers/CCArray_sliceLabels/.dune-keep} (100%) create mode 100644 dev/containers/CCArray_sliceLabels/index.html rename dev/{containers.data/CCDeque/.jbuilder-keep => containers/CCBV/.dune-keep} (100%) create mode 100644 dev/containers/CCBV/index.html rename dev/{containers.data/CCFQueue/.jbuilder-keep => containers/CCBijection/.dune-keep} (100%) create mode 100644 dev/containers/CCBijection/Make/argument-1-L/index.html create mode 100644 dev/containers/CCBijection/Make/argument-2-R/index.html create mode 100644 dev/containers/CCBijection/Make/index.html create mode 100644 dev/containers/CCBijection/index.html create mode 100644 dev/containers/CCBijection/module-type-OrderedType/index.html create mode 100644 dev/containers/CCBijection/module-type-S/index.html rename dev/{containers.data/CCFun_vec/.jbuilder-keep => containers/CCBitField/.dune-keep} (100%) create mode 100644 dev/containers/CCBitField/Make/argument-1-X/index.html create mode 100644 dev/containers/CCBitField/Make/index.html create mode 100644 dev/containers/CCBitField/index.html create mode 100644 dev/containers/CCBitField/module-type-S/index.html rename dev/{containers.data/CCGraph/.jbuilder-keep => containers/CCBlockingQueue/.dune-keep} (100%) create mode 100644 dev/containers/CCBlockingQueue/index.html delete mode 100644 dev/containers/CCBool.odoc rename dev/{containers.data/CCHashSet/.jbuilder-keep => containers/CCBool/.dune-keep} (100%) rename dev/{containers.data/CCHashTrie/.jbuilder-keep => containers/CCCache/.dune-keep} (100%) create mode 100644 dev/containers/CCCache/index.html delete mode 100644 dev/containers/CCChar.odoc rename dev/{containers.data/CCHet/.jbuilder-keep => containers/CCChar/.dune-keep} (100%) rename dev/{containers.data/CCImmutArray/.jbuilder-keep => containers/CCDeque/.dune-keep} (100%) create mode 100644 dev/containers/CCDeque/index.html delete mode 100644 dev/containers/CCEqual.odoc rename dev/{containers.data/CCIntMap/.jbuilder-keep => containers/CCEqual/.dune-keep} (100%) rename dev/{containers.data/CCMixmap/.jbuilder-keep => containers/CCEqualLabels/.dune-keep} (100%) create mode 100644 dev/containers/CCEqualLabels/Infix/index.html create mode 100644 dev/containers/CCEqualLabels/index.html rename dev/{containers.data/CCMixset/.jbuilder-keep => containers/CCFQueue/.dune-keep} (100%) create mode 100644 dev/containers/CCFQueue/index.html delete mode 100644 dev/containers/CCFloat.odoc rename dev/{containers.data/CCMixtbl/.jbuilder-keep => containers/CCFloat/.dune-keep} (100%) delete mode 100644 dev/containers/CCFormat.odoc rename dev/{containers.data/CCMultiMap/.jbuilder-keep => containers/CCFormat/.dune-keep} (100%) delete mode 100644 dev/containers/CCFun.odoc rename dev/{containers.data/CCMultiSet/.jbuilder-keep => containers/CCFun/.dune-keep} (100%) rename dev/{containers.data/CCPersistentArray/.jbuilder-keep => containers/CCFun_vec/.dune-keep} (100%) create mode 100644 dev/containers/CCFun_vec/index.html rename dev/{containers.data/CCPersistentHashtbl/.jbuilder-keep => containers/CCGraph/.dune-keep} (100%) create mode 100644 dev/containers/CCGraph/Dot/index.html create mode 100644 dev/containers/CCGraph/Lazy_tree/index.html create mode 100644 dev/containers/CCGraph/Map/index.html create mode 100644 dev/containers/CCGraph/Seq/index.html create mode 100644 dev/containers/CCGraph/Traverse/Event/index.html create mode 100644 dev/containers/CCGraph/Traverse/index.html create mode 100644 dev/containers/CCGraph/index.html create mode 100644 dev/containers/CCGraph/module-type-MAP/index.html delete mode 100644 dev/containers/CCHash.odoc rename dev/{containers.data/CCRAL/.jbuilder-keep => containers/CCHash/.dune-keep} (100%) rename dev/{containers.data/CCRingBuffer/.jbuilder-keep => containers/CCHashSet/.dune-keep} (100%) create mode 100644 dev/containers/CCHashSet/Make/argument-1-E/index.html create mode 100644 dev/containers/CCHashSet/Make/index.html create mode 100644 dev/containers/CCHashSet/index.html create mode 100644 dev/containers/CCHashSet/module-type-ELEMENT/index.html create mode 100644 dev/containers/CCHashSet/module-type-S/index.html rename dev/{containers.data/CCSimple_queue/.jbuilder-keep => containers/CCHashTrie/.dune-keep} (100%) create mode 100644 dev/containers/CCHashTrie/Make/argument-1-K/index.html create mode 100644 dev/containers/CCHashTrie/Make/index.html create mode 100644 dev/containers/CCHashTrie/Transient/index.html create mode 100644 dev/containers/CCHashTrie/index.html create mode 100644 dev/containers/CCHashTrie/module-type-KEY/index.html create mode 100644 dev/containers/CCHashTrie/module-type-S/index.html delete mode 100644 dev/containers/CCHashtbl.odoc rename dev/{containers.data/CCTrie/.jbuilder-keep => containers/CCHashtbl/.dune-keep} (100%) delete mode 100644 dev/containers/CCHeap.odoc rename dev/{containers.data/CCWBTree/.jbuilder-keep => containers/CCHeap/.dune-keep} (100%) create mode 100644 dev/containers/CCHeap/Make_from_compare/argument-1-E/index.html create mode 100644 dev/containers/CCHeap/Make_from_compare/index.html create mode 100644 dev/containers/CCHeap/module-type-TOTAL_ORD/index.html rename dev/{containers.data/CCZipper/.jbuilder-keep => containers/CCHet/.dune-keep} (100%) create mode 100644 dev/containers/CCHet/Key/index.html create mode 100644 dev/containers/CCHet/Map/index.html create mode 100644 dev/containers/CCHet/Tbl/index.html create mode 100644 dev/containers/CCHet/index.html delete mode 100644 dev/containers/CCIO.odoc rename dev/{containers.iter/CCKList/.jbuilder-keep => containers/CCIO/.dune-keep} (100%) rename dev/{containers.iter/CCKTree/.jbuilder-keep => containers/CCImmutArray/.dune-keep} (100%) create mode 100644 dev/containers/CCImmutArray/index.html delete mode 100644 dev/containers/CCInt.odoc rename dev/{containers.iter/CCLazy_list/.jbuilder-keep => containers/CCInt/.dune-keep} (100%) delete mode 100644 dev/containers/CCInt32.odoc rename dev/{containers.monomorphic/CCMonomorphic/.jbuilder-keep => containers/CCInt32/.dune-keep} (100%) delete mode 100644 dev/containers/CCInt64.odoc rename dev/{containers.sexp/CCSexp/.jbuilder-keep => containers/CCInt64/.dune-keep} (100%) rename dev/{containers.sexp/CCSexp_lex/.jbuilder-keep => containers/CCIntMap/.dune-keep} (100%) create mode 100644 dev/containers/CCIntMap/index.html rename dev/{containers.thread/CCBlockingQueue/.jbuilder-keep => containers/CCKList/.dune-keep} (100%) create mode 100644 dev/containers/CCKList/Infix/index.html create mode 100644 dev/containers/CCKList/Traverse/argument-1-M/index.html create mode 100644 dev/containers/CCKList/Traverse/index.html create mode 100644 dev/containers/CCKList/index.html create mode 100644 dev/containers/CCKList/module-type-MONAD/index.html rename dev/{containers.thread/CCLock/.jbuilder-keep => containers/CCKTree/.dune-keep} (100%) create mode 100644 dev/containers/CCKTree/Dot/index.html create mode 100644 dev/containers/CCKTree/class-type-pset/index.html create mode 100644 dev/containers/CCKTree/index.html rename dev/{containers.thread/CCPool/.jbuilder-keep => containers/CCLazy_list/.dune-keep} (100%) create mode 100644 dev/containers/CCLazy_list/Infix/index.html create mode 100644 dev/containers/CCLazy_list/index.html delete mode 100644 dev/containers/CCList.odoc rename dev/{containers.thread/CCSemaphore/.jbuilder-keep => containers/CCList/.dune-keep} (100%) delete mode 100644 dev/containers/CCListLabels.odoc rename dev/{containers.thread/CCThread/.jbuilder-keep => containers/CCListLabels/.dune-keep} (100%) rename dev/{containers.thread/CCTimer/.jbuilder-keep => containers/CCLock/.dune-keep} (100%) create mode 100644 dev/containers/CCLock/LockRef/index.html create mode 100644 dev/containers/CCLock/index.html delete mode 100644 dev/containers/CCMap.odoc rename dev/{containers.top/Containers_top/.jbuilder-keep => containers/CCMap/.dune-keep} (100%) rename dev/{containers.unix/CCUnix/.jbuilder-keep => containers/CCMixmap/.dune-keep} (100%) create mode 100644 dev/containers/CCMixmap/Make/argument-1-X/index.html create mode 100644 dev/containers/CCMixmap/Make/index.html create mode 100644 dev/containers/CCMixmap/index.html create mode 100644 dev/containers/CCMixmap/module-type-ORD/index.html create mode 100644 dev/containers/CCMixmap/module-type-S/index.html rename dev/containers/{CCArray/.jbuilder-keep => CCMixset/.dune-keep} (100%) create mode 100644 dev/containers/CCMixset/index.html rename dev/containers/{CCArrayLabels/.jbuilder-keep => CCMixtbl/.dune-keep} (100%) create mode 100644 dev/containers/CCMixtbl/index.html rename dev/containers/{CCArray_slice/.jbuilder-keep => CCMonomorphic/.dune-keep} (100%) create mode 100644 dev/containers/CCMonomorphic/index.html rename dev/containers/{CCBool/.jbuilder-keep => CCMonomorphicShims_/.dune-keep} (100%) create mode 100644 dev/containers/CCMonomorphicShims_/index.html rename dev/containers/{CCChar/.jbuilder-keep => CCMultiMap/.dune-keep} (100%) create mode 100644 dev/containers/CCMultiMap/Make/argument-1-K/index.html create mode 100644 dev/containers/CCMultiMap/Make/argument-2-V/index.html create mode 100644 dev/containers/CCMultiMap/Make/index.html create mode 100644 dev/containers/CCMultiMap/MakeBidir/argument-1-L/index.html create mode 100644 dev/containers/CCMultiMap/MakeBidir/argument-2-R/index.html create mode 100644 dev/containers/CCMultiMap/MakeBidir/index.html create mode 100644 dev/containers/CCMultiMap/index.html create mode 100644 dev/containers/CCMultiMap/module-type-BIDIR/index.html create mode 100644 dev/containers/CCMultiMap/module-type-OrderedType/index.html create mode 100644 dev/containers/CCMultiMap/module-type-S/index.html rename dev/containers/{CCEqual/.jbuilder-keep => CCMultiSet/.dune-keep} (100%) create mode 100644 dev/containers/CCMultiSet/Make/index.html create mode 100644 dev/containers/CCMultiSet/index.html create mode 100644 dev/containers/CCMultiSet/module-type-S/index.html delete mode 100644 dev/containers/CCNativeint.odoc rename dev/containers/{CCFloat/.jbuilder-keep => CCNativeint/.dune-keep} (100%) delete mode 100644 dev/containers/CCOpt.odoc rename dev/containers/{CCFormat/.jbuilder-keep => CCOpt/.dune-keep} (100%) delete mode 100644 dev/containers/CCOrd.odoc rename dev/containers/{CCFun/.jbuilder-keep => CCOrd/.dune-keep} (100%) delete mode 100644 dev/containers/CCPair.odoc rename dev/containers/{CCHash/.jbuilder-keep => CCPair/.dune-keep} (100%) delete mode 100644 dev/containers/CCParse.odoc rename dev/containers/{CCHashtbl/.jbuilder-keep => CCParse/.dune-keep} (100%) rename dev/containers/{CCHeap/.jbuilder-keep => CCPersistentArray/.dune-keep} (100%) create mode 100644 dev/containers/CCPersistentArray/index.html rename dev/containers/{CCIO/.jbuilder-keep => CCPersistentHashtbl/.dune-keep} (100%) create mode 100644 dev/containers/CCPersistentHashtbl/Make/argument-1-H/index.html create mode 100644 dev/containers/CCPersistentHashtbl/Make/index.html create mode 100644 dev/containers/CCPersistentHashtbl/index.html create mode 100644 dev/containers/CCPersistentHashtbl/module-type-HashedType/index.html create mode 100644 dev/containers/CCPersistentHashtbl/module-type-S/index.html rename dev/containers/{CCInt/.jbuilder-keep => CCPool/.dune-keep} (100%) create mode 100644 dev/containers/CCPool/Make/Fut/Infix/index.html create mode 100644 dev/containers/CCPool/Make/Fut/index.html create mode 100644 dev/containers/CCPool/Make/argument-1-P/index.html create mode 100644 dev/containers/CCPool/Make/index.html create mode 100644 dev/containers/CCPool/index.html create mode 100644 dev/containers/CCPool/module-type-PARAM/index.html rename dev/containers/{CCInt32/.jbuilder-keep => CCRAL/.dune-keep} (100%) create mode 100644 dev/containers/CCRAL/Infix/index.html create mode 100644 dev/containers/CCRAL/index.html delete mode 100644 dev/containers/CCRandom.odoc rename dev/containers/{CCInt64/.jbuilder-keep => CCRandom/.dune-keep} (100%) delete mode 100644 dev/containers/CCRef.odoc rename dev/containers/{CCList/.jbuilder-keep => CCRef/.dune-keep} (100%) delete mode 100644 dev/containers/CCResult.odoc rename dev/containers/{CCListLabels/.jbuilder-keep => CCResult/.dune-keep} (100%) rename dev/containers/{CCMap/.jbuilder-keep => CCRingBuffer/.dune-keep} (100%) create mode 100644 dev/containers/CCRingBuffer/Array/Byte/index.html create mode 100644 dev/containers/CCRingBuffer/Array/Make/argument-1-Elt/index.html create mode 100644 dev/containers/CCRingBuffer/Array/Make/index.html create mode 100644 dev/containers/CCRingBuffer/Array/index.html create mode 100644 dev/containers/CCRingBuffer/Array/module-type-S/index.html create mode 100644 dev/containers/CCRingBuffer/Byte/index.html create mode 100644 dev/containers/CCRingBuffer/Make/Array/index.html create mode 100644 dev/containers/CCRingBuffer/Make/argument-1-X/index.html create mode 100644 dev/containers/CCRingBuffer/Make/index.html create mode 100644 dev/containers/CCRingBuffer/MakeFromArray/argument-1-A/index.html create mode 100644 dev/containers/CCRingBuffer/MakeFromArray/index.html create mode 100644 dev/containers/CCRingBuffer/index.html create mode 100644 dev/containers/CCRingBuffer/module-type-S/Array/index.html create mode 100644 dev/containers/CCRingBuffer/module-type-S/index.html rename dev/containers/{CCNativeint/.jbuilder-keep => CCSemaphore/.dune-keep} (100%) create mode 100644 dev/containers/CCSemaphore/index.html delete mode 100644 dev/containers/CCSet.odoc rename dev/containers/{CCOpt/.jbuilder-keep => CCSet/.dune-keep} (100%) rename dev/containers/{CCOrd/.jbuilder-keep => CCSexp/.dune-keep} (100%) create mode 100644 dev/containers/CCSexp/Decoder/index.html create mode 100644 dev/containers/CCSexp/Make/Decoder/index.html create mode 100644 dev/containers/CCSexp/Make/argument-1-Sexp/index.html create mode 100644 dev/containers/CCSexp/Make/index.html create mode 100644 dev/containers/CCSexp/index.html create mode 100644 dev/containers/CCSexp/module-type-S/Decoder/index.html create mode 100644 dev/containers/CCSexp/module-type-S/index.html create mode 100644 dev/containers/CCSexp/module-type-SEXP/index.html rename dev/containers/{CCPair/.jbuilder-keep => CCSexp_intf/.dune-keep} (100%) create mode 100644 dev/containers/CCSexp_intf/index.html create mode 100644 dev/containers/CCSexp_intf/module-type-S/Decoder/index.html create mode 100644 dev/containers/CCSexp_intf/module-type-S/index.html create mode 100644 dev/containers/CCSexp_intf/module-type-SEXP/index.html rename dev/containers/{CCParse/.jbuilder-keep => CCSexp_lex/.dune-keep} (100%) create mode 100644 dev/containers/CCSexp_lex/index.html rename dev/containers/{CCRandom/.jbuilder-keep => CCShimsArray_/.dune-keep} (100%) create mode 100644 dev/containers/CCShimsArray_/index.html rename dev/containers/{CCRef/.jbuilder-keep => CCShimsFormat_/.dune-keep} (100%) create mode 100644 dev/containers/CCShimsFormat_/index.html rename dev/containers/{CCResult/.jbuilder-keep => CCShimsFun_/.dune-keep} (100%) create mode 100644 dev/containers/CCShimsFun_/index.html rename dev/containers/{CCSet/.jbuilder-keep => CCShimsList_/.dune-keep} (100%) create mode 100644 dev/containers/CCShimsList_/index.html rename dev/containers/{CCString/.jbuilder-keep => CCShims_/.dune-keep} (100%) create mode 100644 dev/containers/CCShims_/index.html rename dev/containers/{CCUtf8_string/.jbuilder-keep => CCSimple_queue/.dune-keep} (100%) create mode 100644 dev/containers/CCSimple_queue/Infix/index.html create mode 100644 dev/containers/CCSimple_queue/index.html delete mode 100644 dev/containers/CCString.odoc rename dev/containers/{CCVector/.jbuilder-keep => CCString/.dune-keep} (100%) rename dev/containers/{Containers/.jbuilder-keep => CCStringLabels/.dune-keep} (100%) create mode 100644 dev/containers/CCStringLabels/Find/index.html create mode 100644 dev/containers/CCStringLabels/Split/index.html create mode 100644 dev/containers/CCStringLabels/Sub/index.html create mode 100644 dev/containers/CCStringLabels/index.html create mode 100644 dev/containers/CCStringLabels/module-type-S/index.html create mode 100644 dev/containers/CCThread/.dune-keep create mode 100644 dev/containers/CCThread/Arr/index.html create mode 100644 dev/containers/CCThread/Barrier/index.html create mode 100644 dev/containers/CCThread/index.html create mode 100644 dev/containers/CCTimer/.dune-keep create mode 100644 dev/containers/CCTimer/index.html create mode 100644 dev/containers/CCTrie/.dune-keep create mode 100644 dev/containers/CCTrie/Make/argument-1-W/index.html create mode 100644 dev/containers/CCTrie/Make/index.html create mode 100644 dev/containers/CCTrie/MakeArray/argument-1-X/index.html create mode 100644 dev/containers/CCTrie/MakeArray/index.html create mode 100644 dev/containers/CCTrie/MakeList/argument-1-X/index.html create mode 100644 dev/containers/CCTrie/MakeList/index.html create mode 100644 dev/containers/CCTrie/String/index.html create mode 100644 dev/containers/CCTrie/index.html create mode 100644 dev/containers/CCTrie/module-type-ORDERED/index.html create mode 100644 dev/containers/CCTrie/module-type-S/index.html create mode 100644 dev/containers/CCTrie/module-type-WORD/index.html create mode 100644 dev/containers/CCUnix/.dune-keep create mode 100644 dev/containers/CCUnix/Infix/index.html create mode 100644 dev/containers/CCUnix/index.html delete mode 100644 dev/containers/CCUtf8_string.odoc create mode 100644 dev/containers/CCUtf8_string/.dune-keep delete mode 100644 dev/containers/CCVector.odoc create mode 100644 dev/containers/CCVector/.dune-keep create mode 100644 dev/containers/CCWBTree/.dune-keep create mode 100644 dev/containers/CCWBTree/Make/argument-1-X/index.html create mode 100644 dev/containers/CCWBTree/Make/index.html create mode 100644 dev/containers/CCWBTree/MakeFull/argument-1-X/index.html create mode 100644 dev/containers/CCWBTree/MakeFull/index.html create mode 100644 dev/containers/CCWBTree/index.html create mode 100644 dev/containers/CCWBTree/module-type-KEY/index.html create mode 100644 dev/containers/CCWBTree/module-type-ORD/index.html create mode 100644 dev/containers/CCWBTree/module-type-S/index.html create mode 100644 dev/containers/CCZipper/.dune-keep create mode 100644 dev/containers/CCZipper/index.html create mode 100644 dev/containers/Containers/.dune-keep create mode 100644 dev/containers/ContainersLabels/.dune-keep create mode 100644 dev/containers/ContainersLabels/Hashtbl/Make/index.html create mode 100644 dev/containers/ContainersLabels/Hashtbl/MakeSeeded/argument-1-H/index.html create mode 100644 dev/containers/ContainersLabels/Hashtbl/MakeSeeded/index.html create mode 100644 dev/containers/ContainersLabels/Hashtbl/index.html create mode 100644 dev/containers/ContainersLabels/Hashtbl/module-type-HashedType/index.html create mode 100644 dev/containers/ContainersLabels/Hashtbl/module-type-S'/index.html create mode 100644 dev/containers/ContainersLabels/Hashtbl/module-type-S/index.html create mode 100644 dev/containers/ContainersLabels/Hashtbl/module-type-SeededHashedType/index.html create mode 100644 dev/containers/ContainersLabels/Hashtbl/module-type-SeededS/index.html create mode 100644 dev/containers/ContainersLabels/index.html create mode 100644 dev/containers/Containers_top/.dune-keep create mode 100644 dev/containers/Containers_top/index.html delete mode 100644 dev/containers/containers.odoc delete mode 100644 dev/containers/index-generated.mld delete mode 100644 dev/containers/page-index.odoc create mode 100644 dev/highlight.pack.js diff --git a/dev/containers.data/CCBV.odoc b/dev/containers.data/CCBV.odoc deleted file mode 100644 index a0d881b84feaaf979d897a231ffa8b0832985e77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4719 zcmbtYYit}>74|+x!dnV`5H$jY+{Ekkd%bHXp-$p-Z6|h3sg>BNB_xnFyL)$c@a){p z%&Z@6sRR`9r-gB?xPn$_8WLJTRZLMR@B=DPDgA*^p;W5WNFbn61!^lqCDbCqckZ2; zU7Lt!B{z3>?mg!_=X~e8XI7L&X(*o^$>#1q|MeesbaeFLPs86H{N1oUToRV68y2^n zY*}~p$I??%lZ%DicPGC6-si7>R zn@Gkz-+yMZ;CqK>>kV$}uCc<|q~Wgck}GVd;1~Rhc$%A>KQ(d3?A#2Sx_x49=F|ed z>-;2h46DQ$A~~9JjJr8A9A=4C=HMtVGu;$cm8}|Xjkz_>ilNmkTM%{5Dov~88p3i| zO<&#(#8NEKmc+1VNrBXi?QbS2&4Ot;p_O14l) z?)Ux7WV2G?wwHVKkt1Wj9ABM&?%dDcnx6h+pYPu~rPocvf^!(27Is~CCw0dtIbLr4 zsR!Qo%)+;pPwxNC*~RA{z7BTO1~2!)TNb{Yo<4u(t)7`P3orfZvhVkw=JpB>u5g@u zB>AUTAO6D)gZmEkKJ@0@uUzo`?z>7g9RNOV&N_Q9|3tfI=KC+Z_r3jM!Q0L|c4?TH zI7~#$0!`=ea1GfTc8t2PhLO%?r=gd48*_)3icP~T50`mGM=^3^Bd`4E6R+QR=B_8M zP9455usBih{D+>sl$<%>f`Z=R31)K?S}&q#5mO3B2?N+e$Yr!==@wWHI?6b*_>r*&KDFgPq5w87rT_{QDwJ3y1UX%Nj%g?4uq9KuvOkqJDqL@Og$pLvHt4?h8mUO#J z)R8drbIp1YL{$etRSxC|Fpm#n4XEInF24ZY~>Mjc&M=g=o=-E3+K^sizk_zxKf%8IZiEY?F`SQ28pn+5?V@Xh^&QZx{4bBjBIUokt12|q%Qr;D?cw}B!g6)%k#u0 zF57K#5v@**>Y{}qHq^9Gl?E>v6$98+j)FEN-&GqT2F-A4wqY%&cBLS~2{4Zj%vvCa zQC`yRs_%_J8Z2H_DoXyHs4i;(0w-IT51+!m(w zL3wsfoqf9tq>zQpEr1=y5M&n61{q&-xdkd!Wtb6KW>kQULnk9lUkxyM((X5;T`iXC zss@IS&#F{~wk4$7*gS_oTdbm+kTF=L{21WW8fly>1gjaS1i@}*<^fr7X-j!iIuGR(lt8T>0Vcn(Qh-i^m695xor> z307_DwvIba`s0kO5}TA2KuKZJfO2EtsG>8WUo9Yu1O#`e1aU_Q;>SIr5_un+wnZI+ zDa|6ZsI}CTQ6x!{$)hmkRok#R2_OI?4MqvD@U@yP@C5Y7!>F~O$?8#s1f1pqH9kSU zP-dELn7`4hWQMtjyr1!NP2D8IV&C6U!%mU;Fa4j%;Yf@U$sEdYO#BRT>rMa zV%Vy1W7D*f^#_7M5-m$2Qa+|W4A^K3d()5+@9Vd#a`wxc+1SAHjzy(#tE}8l9Y-)m9xY@vn z81}CmI~3@^RE|txSO@1IpCGEg(HFD?d6redctw7R;qjA71-1C?Dv;AbAlv=e0s*9r zGLY8Ce-TJ$R~U)h?%?(2{|#uk6;NIL`*>Evc5 zA{OkZ0ex^+g{)OX=J=OF2b;>lR^Z@WG(^x>Lvq#Tpnr#h-Kn{@pT|Q#-&B5{QhpLQ z_mz!GC8|q4`V^D}-0g?h;cL~A0WT1wd_|N!P9CKYgNE{QumtXbYxGh(Q(g=K{aOLK z5&#-c69h_ZKP{M>XD+fj-WD?{hV&;@OL;oz=6z3HO_BG5bZ~bo$Nw5S{+n`qHE>+c zphv(kSyQ!y1lq_u?rT(yo+%~6l7?x#IFgWcVUxTal$1%mN|l6-QK=y;ys@H#^yu;m z(2~*aESrs#@K`v8IW^qD7^SY| -CCBV (containers.data.CCBV)

Module CCBV

Imperative Bitvectors

BREAKING CHANGES since 1.2: -size is now stored along with the bitvector. Some functions have -a new signature.

The size of the bitvector used to be rounded up to the multiple of 30 or 62. -In other words some functions such as iter would iterate on more -bits than what was originally asked for. This is not the case anymore.

type t

A resizable bitvector

val empty : unit ‑> t

Empty bitvector.

val create : size:int ‑> bool ‑> t

Create a bitvector of given size, with given default value.

val copy : t ‑> t

Copy of bitvector.

val cardinal : t ‑> int

Number of bits set to one, seen as a set of bits.

val length : t ‑> int

Size of underlying bitvector. -This is not related to the underlying implementation. -Changed at 1.2

val capacity : t ‑> int

The number of bits this bitvector can store without resizing.

  • Since: 1.2
val resize : t ‑> int ‑> unit

Resize the BV so that it has the specified length. This can grow or shrink -the underlying bitvector.

  • Raises Invalid_arg: on negative sizes.
val is_empty : t ‑> bool

Are there any true bits?

val set : t ‑> int ‑> unit

Set i-th bit, extending the bitvector if needed.

val get : t ‑> int ‑> bool

Is the i-th bit true? Return false if the index is too high.

val reset : t ‑> int ‑> unit

Set i-th bit to 0, extending the bitvector if needed.

val flip : t ‑> int ‑> unit

Flip i-th bit, extending the bitvector if needed.

val clear : t ‑> unit

Set every bit to 0.

val iter : t ‑> (int ‑> bool ‑> unit) ‑> unit

Iterate on all bits.

val iter_true : t ‑> (int ‑> unit) ‑> unit

Iterate on bits set to 1.

val to_list : t ‑> int list

List of indexes that are true.

val to_sorted_list : t ‑> int list

Same as to_list, but also guarantees the list is sorted in -increasing order.

val of_list : int list ‑> t

From a list of true bits.

The bits are interpreted as indices into the returned bitvector, so the final -bitvector will have length t equal to 1 more than max of list indices.

val first : t ‑> int option

First set bit, or return None. -Changed type at 1.2

val first_exn : t ‑> int

First set bit, or

  • Raises Not_found: if all bits are 0.
  • Since: 1.2
val filter : t ‑> (int ‑> bool) ‑> unit

filter bv p only keeps the true bits of bv whose index -satisfies p index.

val negate_self : t ‑> unit

negate_self t flips all of the bits in t.

  • Since: 1.2
val negate : t ‑> t

negate t returns a copy of t with all of the bits flipped.

val union_into : into:t ‑> t ‑> unit

union_into ~into bv sets into to the union of itself and bv. -Also updates the length of into to be at least length bv.

val inter_into : into:t ‑> t ‑> unit

inter_into ~into bv sets into to the intersection of itself and bv. -Also updates the length of into to be at most length bv.

val union : t ‑> t ‑> t

union bv1 bv2 returns the union of the two sets.

val inter : t ‑> t ‑> t

inter bv1 bv2 returns the intersection of the two sets.

val diff_into : into:t ‑> t ‑> unit

diff_into ~into t modifies into with only the bits set but not in t.

  • Since: 1.2
val diff : t ‑> t ‑> t

diff t1 t2 returns those bits found in t1 but not in t2.

  • Since: 1.2
val select : t ‑> 'a array ‑> 'a list

select arr bv selects the elements of arr whose index -corresponds to a true bit in bv. If bv is too short, elements of arr -with too high an index cannot be selected and are therefore not -selected.

val selecti : t ‑> 'a array ‑> ('a * int) list

Same as select, but selected elements are paired with their indexes.

type 'a sequence = ('a ‑> unit) ‑> unit
val to_seq : t ‑> int sequence
val of_seq : int sequence ‑> t
val pp : Format.formatter ‑> t ‑> unit

Print the bitvector as a string of bits.

  • Since: 0.13
\ No newline at end of file diff --git a/dev/containers.data/CCBijection.odoc b/dev/containers.data/CCBijection.odoc deleted file mode 100644 index 40e83dce27500f83101b6234c68951bc629fce42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4105 zcmbtW3yf4(8J;=!{0+Mx52b}7(7W$hcG+1dkBy=64p3}ufp(Xe3fA@R%vtubGjo@F z@9eUbR!~w?#d^1thfwT=vS1r+H&j@Sk8B&TXl$XPKpQlTX{{()+ZwH*G5+Uuhni|q z-RxxU-1B|k|NZ~@&%@2R*}3yt=C`zN+j;oMiA16mKY*X>@H1s3oppwU9}1p|x~&0xSa zgTX%Lx0pBE*&dVSSpf-Vx91kjpof{&dDb0NS317nvYZ*Xrd!1Kp0mCus5blUe2F!i zb}?sS0s1j}mLF`fq8&B!Tjp7GVidJ4vkQ5r7%;DB=U2F1!48(%zLWLC*1;#YPaN%d zs(1MfudMmhbGye!(VRP&*N>z942Sp8%NKXQHo1A$g49EA-1E{wD;#O_y=)|4~5~b+EUR8EPSGXBhk>< zA!;?P_HxW)xiwhLkX|1S39*W*Af#1eh(g@Xk#Ez<4OzF)XM2cA9pw_kbQ+zA(o&79 z*I=gS}OQtbQH`Ba+ z+)6j7ZIUiIMje98!XB3BmnJaAv*73T{8{AW_)dE*^ccoyPrI-HfHx30Ex9En;FY zCotJ2#}BYw+F4NYih^3{+XZ&j8W7z%;P@==f>CAVxcr9XH0}wKGnA=JlQb3gLYs6Z zjHwni2OMm;*k#3H(Q+T$l&<$V?Pb37vQT;XOtbP5x66Mq6PM}#b#qy}St;Gzq1+5K z=CR&!T`Fq4a^3aJ;9i0MCI|Axl8S5eo|#NF$`jF71%TuR9%@%D=S4drF(I=o`8`t| z3XqKE2m_)RLt~UiQ6?8jzCcLiw}$Q&SsrnD={ok&rl>g$*)(8YSUTPl$0Vu;SvR&wV!f-ch3FDvT(+A66`ajU!*A&?a^(iRQhr{H_bHm}H#|CAv~T?5)w zY+JJTY4&l&KBjzmi6!<)sS@LS>2bXA6~sKSee7?Vq^Jh*NtUBn0ZUw9x2N9bC5m$LFXAio517RWE8 zl^l>4ft*oR93a2eR*FD=i&n6FD6ocNLgG@i7RVog`~k=%Deze!zX$TV637Dis}|@1 z@(&bv9bNM44%Yf5AQym~m%kqdat_F^=t}u>k90+sOIfVf86c;z<%Ve#2gB)k0m$0vMAu>@0_=_ZPsZ;>|WpFM?4gjlTlqFixmKyaq-KiXIT6mwEs9{Jh0OMZ8XanOO z#aIHw1F}&wGGKfuj{C!T6qH_+b1{F$RFN1G!T(HiL1}!v4z0eFHPw2F6ds-hs~#fN=s> zlPuuZfP8#t3~P=py%e8;V7hHuXeSuI;X-Y((0(v3XrY5(yc!E(qqG58j7%VEW5rlc zf$^q>e;1555U#bq50t1(egyOy<>wjHKmj4MFpl~&pcAyrX`q!T!&?=SXMxUC%=1VC zvQW!k1X{#-No1XLbxcwn{y?L`s% F`xhVh{GtE= diff --git a/dev/containers.data/CCBijection/Make/argument-1-L/index.html b/dev/containers.data/CCBijection/Make/argument-1-L/index.html deleted file mode 100644 index f26091b4..00000000 --- a/dev/containers.data/CCBijection/Make/argument-1-L/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-L (containers.data.CCBijection.Make.1-L)

Parameter CCBijection.Make.1-L

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCBijection/Make/argument-2-R/index.html b/dev/containers.data/CCBijection/Make/argument-2-R/index.html deleted file mode 100644 index 0061f2df..00000000 --- a/dev/containers.data/CCBijection/Make/argument-2-R/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -2-R (containers.data.CCBijection.Make.2-R)

Parameter CCBijection.Make.2-R

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCBijection/Make/index.html b/dev/containers.data/CCBijection/Make/index.html deleted file mode 100644 index 90ec9ac5..00000000 --- a/dev/containers.data/CCBijection/Make/index.html +++ /dev/null @@ -1,7 +0,0 @@ - -Make (containers.data.CCBijection.Make)

Module CCBijection.Make

Parameters

Signature

type t
type left = L.t
type right = R.t
val empty : t
val is_empty : t ‑> bool
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val add : left ‑> right ‑> t ‑> t

Add left and right correspondence to bijection such that -left and right are unique in their respective sets and only -correspond to each other.

val cardinal : t ‑> int

Number of bindings. O(n) time

val mem : left ‑> right ‑> t ‑> bool

Checks both sides for key membership.

val mem_left : left ‑> t ‑> bool

Checks for membership of correspondence using left key

val mem_right : right ‑> t ‑> bool

Checks for membership of correspondence using right key

val find_left : left ‑> t ‑> right
  • Raises Not_found: if left is not found
val find_right : right ‑> t ‑> left
  • Raises Not_found: if right is not found
val remove : left ‑> right ‑> t ‑> t

Removes the left, right binding if it exists. Returns the -same bijection otherwise.

val remove_left : left ‑> t ‑> t

Remove the binding with left key if it exists. Returns the -same bijection otherwise

val remove_right : right ‑> t ‑> t

Remove the binding with right key if it exists. Returns the -same bijection otherwise

val list_left : t ‑> (left * right) list

returns the bindings as a list of (left, right) values

val list_right : t ‑> (right * left) list
val add_seq : (left * right) sequence ‑> t ‑> t
val of_seq : (left * right) sequence ‑> t
val to_seq : t ‑> (left * right) sequence
val add_list : (left * right) list ‑> t ‑> t
val of_list : (left * right) list ‑> t
val to_list : t ‑> (left * right) list
\ No newline at end of file diff --git a/dev/containers.data/CCBijection/index.html b/dev/containers.data/CCBijection/index.html deleted file mode 100644 index b54cf64e..00000000 --- a/dev/containers.data/CCBijection/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -CCBijection (containers.data.CCBijection)

Module CCBijection

Bijection

-Represents 1-to-1 mappings between two types. Each element from the "left" -is mapped to one "right" value, and conversely.

  • Since: 2.1
type 'a sequence = ('a ‑> unit) ‑> unit
module type OrderedType : sig ... end
module type S : sig ... end
module Make : functor (L : OrderedType) -> functor (R : OrderedType) -> S with type left = L.t and type right = R.t
\ No newline at end of file diff --git a/dev/containers.data/CCBijection/module-type-OrderedType/index.html b/dev/containers.data/CCBijection/module-type-OrderedType/index.html deleted file mode 100644 index f9d3a4cb..00000000 --- a/dev/containers.data/CCBijection/module-type-OrderedType/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -OrderedType (containers.data.CCBijection.OrderedType)

Module type CCBijection.OrderedType

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCBijection/module-type-S/index.html b/dev/containers.data/CCBijection/module-type-S/index.html deleted file mode 100644 index 69cb3b32..00000000 --- a/dev/containers.data/CCBijection/module-type-S/index.html +++ /dev/null @@ -1,7 +0,0 @@ - -S (containers.data.CCBijection.S)

Module type CCBijection.S

type t
type left
type right
val empty : t
val is_empty : t ‑> bool
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val add : left ‑> right ‑> t ‑> t

Add left and right correspondence to bijection such that -left and right are unique in their respective sets and only -correspond to each other.

val cardinal : t ‑> int

Number of bindings. O(n) time

val mem : left ‑> right ‑> t ‑> bool

Checks both sides for key membership.

val mem_left : left ‑> t ‑> bool

Checks for membership of correspondence using left key

val mem_right : right ‑> t ‑> bool

Checks for membership of correspondence using right key

val find_left : left ‑> t ‑> right
  • Raises Not_found: if left is not found
val find_right : right ‑> t ‑> left
  • Raises Not_found: if right is not found
val remove : left ‑> right ‑> t ‑> t

Removes the left, right binding if it exists. Returns the -same bijection otherwise.

val remove_left : left ‑> t ‑> t

Remove the binding with left key if it exists. Returns the -same bijection otherwise

val remove_right : right ‑> t ‑> t

Remove the binding with right key if it exists. Returns the -same bijection otherwise

val list_left : t ‑> (left * right) list

returns the bindings as a list of (left, right) values

val list_right : t ‑> (right * left) list
val add_seq : (left * right) sequence ‑> t ‑> t
val of_seq : (left * right) sequence ‑> t
val to_seq : t ‑> (left * right) sequence
val add_list : (left * right) list ‑> t ‑> t
val of_list : (left * right) list ‑> t
val to_list : t ‑> (left * right) list
\ No newline at end of file diff --git a/dev/containers.data/CCBitField.odoc b/dev/containers.data/CCBitField.odoc deleted file mode 100644 index 27f8f361fadfa76d67834f7a95a45530c428b7f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1955 zcmb7^O>7%Q6vv(D8HlN9`A|g!p%W#k>@>06G-{xq8>dYrL}*3A$1NJ~&c>_k?wH+i z99xKTCQ)Fk;vhb#Ah!)53lD;?hESpEC{m}74+KR#6-anlMZt& zBj0)UiLJk;zP-DcymfW^&enHY;{HM+(J_-qzy>}&4^93n7!j|5`RHaM=Cx`Nc2juXG41^?Yu`=^5 z$DbqIC!)j%4a|}wm?C{aYKh#RVZfd^ zetLp>uHy?9_|%=`fk#DwhK?CV`P!H7J+v|X)%>Y_TQe`+x%^-p51wPe0!9}YhOfZg zUoQW;XQ*d1z5GZ0=M^Jb9}5FBCwa@YwHD>Oa=8-sST1xt?&qpJm=DX;WNnn@W{VZa zwQ`6Ct+*n8KAHXP)wiwUfm@^91KV$1A2*`-qs<$T8J^*MiuyIhR*1MoUC+Egose0i zT4G2C=fuM}(L5n3j9{&KjN>jj0>oOhWep=T45d4|e=^{8<}1O$c0o#P6=|&^8e|6x zSPg}X>o?(K#-od~RmTz~B~qBKg@Sp*nq3Jw#vQNX5tT!11e~@+ha|L)NnOOZ2|tRj zM$x4{^lijTo2&4A?=(tp6mXzMaK1E*)6Sev#^6o3(8xFjH!uU -1-X (containers.data.CCBitField.Make.1-X)

Parameter CCBitField.Make.1-X

\ No newline at end of file diff --git a/dev/containers.data/CCBitField/Make/index.html b/dev/containers.data/CCBitField/Make/index.html deleted file mode 100644 index 265d8a11..00000000 --- a/dev/containers.data/CCBitField/Make/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Make (containers.data.CCBitField.Make)

Module CCBitField.Make

Create a new bitfield type

Parameters

X : sig ... end

Signature

type t = private int

Generative type of bitfields. Each instantiation of the functor -should create a new, incompatible type

val empty : t

Empty bitfields (all bits 0).

type field
val get : field ‑> t ‑> bool

Get the value of this field.

val set : field ‑> bool ‑> t ‑> t

Set the value of this field.

val mk_field : unit ‑> field

Make a new field.

val freeze : unit ‑> unit

Prevent new fields from being added. From now on, creating -a field will raise Frozen.

val total_width : unit ‑> int

Current width of the bitfield.

\ No newline at end of file diff --git a/dev/containers.data/CCBitField/index.html b/dev/containers.data/CCBitField/index.html deleted file mode 100644 index 8897e60f..00000000 --- a/dev/containers.data/CCBitField/index.html +++ /dev/null @@ -1,15 +0,0 @@ - -CCBitField (containers.data.CCBitField)

Module CCBitField

Bit Field

This module defines efficient bitfields -up to 30 or 62 bits (depending on the architecture) in -a relatively type-safe way.

      module B = CCBitField.Make(struct end);;
-
-      let x = B.mk_field ()
-      let y = B.mk_field ()
-      let z = B.mk_field ()
-
-      let f = B.empty |> B.set x true |> B.set y true;;
-
-      assert (not (B.get z f)) ;;
-
-      assert (f |> B.set z true |> B.get z);;
-
exception TooManyFields

Raised when too many fields are packed into one bitfield.

exception Frozen

Raised when a frozen bitfield is modified.

val max_width : int

System-dependent maximum width for a bitfield, typically 30 or 62.

module type S : sig ... end

Bitfield Signature

module Make : functor (X : sig ... end) -> S

Create a new bitfield type

\ No newline at end of file diff --git a/dev/containers.data/CCBitField/module-type-S/index.html b/dev/containers.data/CCBitField/module-type-S/index.html deleted file mode 100644 index b9fe76af..00000000 --- a/dev/containers.data/CCBitField/module-type-S/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -S (containers.data.CCBitField.S)

Module type CCBitField.S

Bitfield Signature

type t = private int

Generative type of bitfields. Each instantiation of the functor -should create a new, incompatible type

val empty : t

Empty bitfields (all bits 0).

type field
val get : field ‑> t ‑> bool

Get the value of this field.

val set : field ‑> bool ‑> t ‑> t

Set the value of this field.

val mk_field : unit ‑> field

Make a new field.

val freeze : unit ‑> unit

Prevent new fields from being added. From now on, creating -a field will raise Frozen.

val total_width : unit ‑> int

Current width of the bitfield.

\ No newline at end of file diff --git a/dev/containers.data/CCCache.odoc b/dev/containers.data/CCCache.odoc deleted file mode 100644 index 91325b51011ccf4c3bcf016360f95e95187e6ed3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3840 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 diff --git a/dev/containers.data/CCCache/index.html b/dev/containers.data/CCCache/index.html deleted file mode 100644 index cf77f8fc..00000000 --- a/dev/containers.data/CCCache/index.html +++ /dev/null @@ -1,38 +0,0 @@ - -CCCache (containers.data.CCCache)

Module CCCache

Caches

Particularly useful for memoization. See with_cache and with_cache_rec -for more details.

  • Since: 0.6
type 'a equal = 'a ‑> 'a ‑> bool
type 'a hash = 'a ‑> int

Value interface

Typical use case: one wants to memoize a function f : 'a -> 'b. Code sample: -

      let f x =
-        print_endline "call f";
-        x + 1;;
-
-      let f' = with_cache (lru 256) f;;
-      f' 0;;  (* prints *)
-      f' 1;;  (* prints *)
-      f' 0;;  (* doesn't print, returns cached value *)
  • Since: 0.6
type ('a, 'b) t
val clear : (__t ‑> unit

Clear the content of the cache.

type ('a, 'b) callback = in_cache:bool ‑> 'a ‑> 'b ‑> unit

Type of the callback that is called once a cached value is found -or not. -Should never raise.

  • Parameter in_cache: is true if the value was in cache, false -if the value was just produced.
  • Since: 1.3
val with_cache : ?⁠cb:('a'bcallback ‑> ('a'bt ‑> ('a ‑> 'b) ‑> 'a ‑> 'b

with_cache c f behaves like f, but caches calls to f in the -cache c. It always returns the same value as -f x, if f x returns, or raise the same exception. -However, f may not be called if x is in the cache.

  • Parameter cb: called after the value is generated or retrieved.
val with_cache_rec : ?⁠cb:('a'bcallback ‑> ('a'bt ‑> (('a ‑> 'b) ‑> 'a ‑> 'b) ‑> 'a ‑> 'b

with_cache_rec c f is a function that first, applies f to -some f' = fix f, such that recursive calls to f' are cached in c. -It is similar to with_cache but with a function that takes as -first argument its own recursive version. -Example (memoized Fibonacci function): -

      let fib = with_cache_rec (lru 256)
-          (fun fib' n -> match n with
-             | 1 | 2 -> 1
-             | _ -> fib' (n-1) + fib' (n-2)
-          );;
-
-      fib 70;;
  • Parameter cb: called after the value is generated or retrieved.
val size : (__t ‑> int

Size of the cache (number of entries). At most linear in the number -of entries.

val iter : ('a'bt ‑> ('a ‑> 'b ‑> unit) ‑> unit

Iterate on cached values. Should yield size cache pairs.

val add : ('a'bt ‑> 'a ‑> 'b ‑> bool

Manually add a cached value. Return true if the value has successfully -been added, and false if the value was already bound.

  • Since: 1.5
val dummy : ('a'bt

Dummy cache, never stores any value.

val linear : eq:'a equal ‑> int ‑> ('a'bt

Linear cache with the given size. It stores key/value pairs in -an array and does linear search at every call, so it should only be used -with small size.

  • Parameter eq: optional equality predicate for keys.
val replacing : eq:'a equal ‑> ?⁠hash:'a hash ‑> int ‑> ('a'bt

Replacing cache of the given size. Equality and hash functions can be -parametrized. It's a hash table that handles collisions by replacing -the old value with the new (so a cache entry is evicted when another -entry with the same hash (modulo size) is added). -Never grows wider than the given size.

val lru : eq:'a equal ‑> ?⁠hash:'a hash ‑> int ‑> ('a'bt

LRU cache of the given size ("Least Recently Used": keys that have not been -used recently are deleted first). Never grows wider than the given size.

val unbounded : eq:'a equal ‑> ?⁠hash:'a hash ‑> int ‑> ('a'bt

Unbounded cache, backed by a Hash table. Will grow forever -unless clear is called manually.

\ No newline at end of file diff --git a/dev/containers.data/CCDeque.odoc b/dev/containers.data/CCDeque.odoc deleted file mode 100644 index 7780e5d60aedecb77c9bc4f9cbbd59f9dda10147..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3800 zcmcInYitx%6yEO6M7Iz^G$=8Gw`I56Ez9n<-S7&^K%oRBl&6aPXztG5?M^y7Go6`j zEe7NVKYdI=Ac&Gd0r3$e7(!4qB!(ChF^Wh+VhDeX7>)1;;~yXA+e%@`ZhM|AEJ^mA@=bAFf`$&s#rbOC%!nL?V-EBr<8;y^%;F;@%C45OrMl)Dp>c z@++$bGpVhNGE(9pUAPqN2PmI>?$ z)k>sDvk-ymCMX@@~`cmyWqm3WBunw z&fnUGc z6bNimS6b6gekwk<;`AkZ+s&^f=Xk*~i6}3?5#)#Hupt0Tz~iU^GhVh-Ffz~P-wHE`cAyF&)ap2 zq-ecr1h&1#h@z3A4&@u8c3 zBA@N<^bmMJe=!M?qbdZS zNb@T~NfAUzL=;q(0>Nv3GgakF`zcAr$zW@*$c7oSbQ1~@IUFzj? zKIH|$O_-SNUwb(%0=^g@dPrr@DzZLgQlp~CQ0(#B@&nSd(y!9Xt5IZe3238PtXjpl`6{+O&`O( zuxtu8fVTq831`A6DL)G7GHO<3kXr^un!g6Vl2NLH~z!X~q z4hqDukHnUtGzSYPWmln7-XYYCW~l9Hn+~(V0IGKbd?V^z;LUBu+tZgg>kkKIajR&P*sU1ySFHm2d&xPQbG2&IWxQ*pt|D$?I~l<=Z;YRUc?U zqO7YW1nTaGi)NItmK?0e5uG;v7k=>y{>CBUru(V`D5t>foY^qFM&ZB$E(!xm!pSB^ z*{mU^IbyUu99WJA5q+2sp$^?Z+vRYZD)<8-+d9DGQk771sD{TAP+*e3jVdfD7D|DdR)*9pM%<&0 z<3N2hwP6D-C^yc&+to+?MEH99-!HTw9MmiAx zQK+{|bazA0Uy-;M)QKnmfjL5lQ~wrlG5U6xO@P}8wR9FTWI?DZ7L zS5+*23SL~d5wCCYK?ZloOSSp*StpfIXc8tp>31{3>`66%i<>0h6r4|6W+R ztjG#lfnA|m(DSi#vjGOA!=a$%Z*3PbHX6hiGC_D@Iu<6LTOMLU8~W~u+6j|t)?{;X zV(g_5d6|b?x7(y);z`ao&DftQ{vD=+7(3JGnTOt-5M#fj;am&0rjAD^G4^rb lp27p|hJl28*B~g@d{CxaBz{;F5<)Vhb&t!DF7g`y_ZNYPzoh^G diff --git a/dev/containers.data/CCDeque/index.html b/dev/containers.data/CCDeque/index.html deleted file mode 100644 index b789301b..00000000 --- a/dev/containers.data/CCDeque/index.html +++ /dev/null @@ -1,14 +0,0 @@ - -CCDeque (containers.data.CCDeque)

Module CCDeque

Imperative deque

This structure provides fast access to its front and back elements, -with O(1) operations.

type 'a t

Contains 'a elements, queue in both ways

exception Empty
val create : unit ‑> 'a t

New deque.

val clear : _ t ‑> unit

Remove all elements.

  • Since: 0.13
val is_empty : 'a t ‑> bool

Is the deque empty?

val equal : eq:('a ‑> 'a ‑> bool) ‑> 'a t ‑> 'a t ‑> bool

equal a b checks whether a and b contain the same sequence of -elements.

  • Parameter eq: comparison function for elements.
  • Since: 0.13
val compare : cmp:('a ‑> 'a ‑> int) ‑> 'a t ‑> 'a t ‑> int

compare a b compares lexicographically a and b

  • Parameter cmp: comparison function for elements.
  • Since: 0.13
val length : 'a t ‑> int

Number of elements. -Used to be linear time, now constant time.

val push_front : 'a t ‑> 'a ‑> unit

Push value at the front.

val push_back : 'a t ‑> 'a ‑> unit

Push value at the back.

val peek_front : 'a t ‑> 'a

First value, or

  • Raises Empty: if empty.
val peek_back : 'a t ‑> 'a

Last value, or

  • Raises Empty: if empty.
val take_back : 'a t ‑> 'a

Take last value, or

  • Raises Empty: if empty.
val take_front : 'a t ‑> 'a

Take first value, or

  • Raises Empty: if empty.
val append_front : into:'a t ‑> 'a t ‑> unit

append_front ~into q adds all elements of q at the front -of into. -O(length q) in time.

  • Since: 0.13
val append_back : into:'a t ‑> 'a t ‑> unit

append_back ~into q adds all elements of q at the back of into. -O(length q) in time.

  • Since: 0.13
val iter : ('a ‑> unit) ‑> 'a t ‑> unit

Iterate on elements.

val fold : ('b ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b

Fold on elements.

  • Since: 0.13

Conversions

type 'a gen = unit ‑> 'a option
type 'a sequence = ('a ‑> unit) ‑> unit
val of_seq : 'a sequence ‑> 'a t

Create a deque from the sequence. -Optional argument deque disappears, use add_seq_back instead since -0.13

val to_seq : 'a t ‑> 'a sequence

Iterate on the elements.

val of_gen : 'a gen ‑> 'a t

of_gen g makes a deque containing the elements of g.

  • Since: 0.13
val to_gen : 'a t ‑> 'a gen

Iterate on the elements of the deque.

  • Since: 0.13
val add_seq_front : 'a t ‑> 'a sequence ‑> unit

add_seq_front q seq adds elements of seq into the front of q, -in reverse order. -O(n) in time, where n is the number of elements to add.

  • Since: 0.13
val add_seq_back : 'a t ‑> 'a sequence ‑> unit

add_seq_back q seq adds elements of seq into the back of q, -in order. -O(n) in time, where n is the number of elements to add.

  • Since: 0.13
val copy : 'a t ‑> 'a t

Fresh copy, O(n) in time.

val of_list : 'a list ‑> 'a t

Conversion from list, in order.

  • Since: 0.13
val to_list : 'a t ‑> 'a list

List of elements, in order. Less efficient than to_rev_list.

  • Since: 0.13
val to_rev_list : 'a t ‑> 'a list

Efficient conversion to list, in reverse order.

  • Since: 0.13

print

type 'a printer = Format.formatter ‑> 'a ‑> unit
val pp : 'a printer ‑> 'a t printer

Print the elements.

  • Since: 0.13
\ No newline at end of file diff --git a/dev/containers.data/CCFQueue.odoc b/dev/containers.data/CCFQueue.odoc deleted file mode 100644 index 79d62cf2b52f78389b5bd620aec4e866513ab0c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4475 zcmb_fYit}>72d}k5j#>KNG)wu;5wf5?k4-P-G)*pVdJC@k&-m769|;x+}*kB9XyZC z%j!LehU1qgx~7Z)uwHEM7OBp zRy5*~9~8E1nV9U-F0I$DdF@LxCqMe=#m{H=<(K{%j0%9&*TVXRRO-X$Q>j%Cu1KZS zRPbNHpo|{`XE)aae|Vy6H9g(7h=C6>pKiTgM=OG0XuR8MQOB=+_t^SRKeusi;x`9> z_vXaJ8^s{FVGA)0-SVgdt0rv6B;Gi2^``6B7Eay0>g?1{XSaUxl|7$(`o5KbBMki7 zH6NS0U!6EQ`DT9G#ZZSBxgzrD9_WqRkKKkWF-ghwA%Gk~L~A3~4jsM+xrd~_#|?-%Gw9v^@AL_v3_!`Da7@EoqG zZ5a|K9`@Q4w;ZTP9vLAUV{udsNWX9oLgFaHb6Pc1dz+$nLQEj@5?l;qOE?l=NgJ zb}~)pE#{~&MNEo`i-RBe09FBkY$)MI*TXHM8?g5l=KB}640!*bNORz?*FhIDaaebS zVZ`ec_Z=x8ofll##wh7Sr34iNh%DBU53q#~27VQ@XD-_<(}u`{#Q_WG$qcw`|IBzJ z`$4B*0t@?cr7(A1*Rfn?V&XZ6bUIYSx`hd5)yrb3ZMS;F(6wpe%ygOB13wR8SsQ9H zj-^2;HV_3%^{Zh>aJ{552!7A%8oiT@?p!jMxwdXlUrB!}ZYfH7Tp%jx{umPFA~+>| zbrSE7MV_1nY0k1e8`%SC!3Mch3`%+}U&k0d1Ui8KN_xG3<&8~b|GjdA_W?R6{oiz; zr1x?EA(;a)8O|k>TNiWTLZ~M0g$_1_MF2|R1rcqk$bpbWIhIANgZT>H)297VCnFAJ z`_EKsI~sMC)oBTygVc1FT~OSnB&uVFGM`lIXPeHX&J0?~a>SmEnZAgFdpZ%-q@-6v z8rM|%gT=lZl2MJ|g58?tSho(3jf{| z0rGT_bNK-I-w6ArvMzYp?M}(49G#u>oaO5U#**VJnRC2yQ2UzhZ6zrQFR#CxVO#k z?`>J*yi8}JikK8LKNikn)emno>;@?Q<_>iTJAm0>%|(#y4zZqKX`Ig2HuG!j&Drua z#W%?rD>}+t3Ns62#-cEbnY5p@V3=Fh+v45>MwR{@@I3)tCv0o3ejD^QQBEOLJlJsl zPjddDAfJho_-rDHM+P0*W28rKp-dcN{@_3*IAhhD3sy1kON?R1p!2%706pr6TB{7# z}{20i|0AC09Tq#IZb=YTE^H!n< zXa6B%=|x_$?}lE+!p{Z;t>ig7p`dXk`+_t?AL6Hfc9B0wegLf7Vq0OwM@mKe^Wov+ zE2tcb<1vY)WW_KisCM$6&Ce+?mHcAUj9?&4zfmTdHVt1`;bg0zDarLN1$~j@3uoCE zV`ne(OM&qHl0@LskAkew{%`SOv?g9F<}k7L+z=22=fD$&FP3$bm6m8M;pCYi2woT- z&<{P9b(P!PZpC+xr7~1O!Fv0!^cc}U{EOGxi*FIN)ReD_H=$Zn@>p+XXV9Xg3b2?n_o*d2iA0; bM}!?^R2ZL7lvxG6CUYIi8~vO=fQI{TSeejE diff --git a/dev/containers.data/CCFQueue/index.html b/dev/containers.data/CCFQueue/index.html deleted file mode 100644 index 98f230cc..00000000 --- a/dev/containers.data/CCFQueue/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -CCFQueue (containers.data.CCFQueue)

Module CCFQueue

Functional queues

type 'a sequence = ('a ‑> unit) ‑> unit
type 'a klist = unit ‑> [ `Nil | `Cons of 'a * 'a klist ]
type 'a equal = 'a ‑> 'a ‑> bool
type 'a printer = Format.formatter ‑> 'a ‑> unit

Basics

type +'a t

Queue containing elements of type 'a

val empty : 'a t
val is_empty : 'a t ‑> bool
val singleton : 'a ‑> 'a t
val doubleton : 'a ‑> 'a ‑> 'a t
exception Empty
val cons : 'a ‑> 'a t ‑> 'a t

Push element at the front of the queue.

val snoc : 'a t ‑> 'a ‑> 'a t

Push element at the end of the queue.

val take_front : 'a t ‑> ('a * 'a t) option

Get and remove the first element.

val take_front_exn : 'a t ‑> 'a * 'a t

Same as take_front, but fails on empty queues.

  • Raises Empty: if the queue is empty.
val take_front_l : int ‑> 'a t ‑> 'a list * 'a t

take_front_l n q takes at most n elements from the front -of q, and returns them wrapped in a list.

  • Raises Invalid_argument: if n<0.
val take_front_while : ('a ‑> bool) ‑> 'a t ‑> 'a list * 'a t
val take_back : 'a t ‑> ('a t * 'a) option

Take last element.

val take_back_exn : 'a t ‑> 'a t * 'a

Same as take_back, but fails on empty queues.

  • Raises Empty: if the queue is empty.
val take_back_l : int ‑> 'a t ‑> 'a t * 'a list

take_back_l n q removes and returns the last n elements of q. The -elements are in the order of the queue, that is, the head of the returned -list is the first element to appear via take_front. -take_back_l 2 (of_list [1;2;3;4]) = of_list [1;2], [3;4].

  • Raises Invalid_argument: if n<0.
val take_back_while : ('a ‑> bool) ‑> 'a t ‑> 'a t * 'a list

Individual extraction

val first : 'a t ‑> 'a option

First element of the queue.

val last : 'a t ‑> 'a option

Last element of the queue.

val first_exn : 'a t ‑> 'a

Same as first but

  • Raises Empty: if the queue is empty.
val last_exn : 'a t ‑> 'a
val nth : int ‑> 'a t ‑> 'a option

Return the i-th element of the queue in logarithmic time.

val nth_exn : int ‑> 'a t ‑> 'a

Unsafe version of nth.

  • Raises Not_found: if the index is wrong.
val tail : 'a t ‑> 'a t

Queue deprived of its first element. Does nothing on empty queues.

val init : 'a t ‑> 'a t

Queue deprived of its last element. Does nothing on empty queues.

Global Operations

val append : 'a t ‑> 'a t ‑> 'a t

Append two queues. Elements from the second one come -after elements of the first one. -Linear in the size of the second queue.

val rev : 'a t ‑> 'a t

Reverse the queue, O(n) complexity.

  • Since: 0.10
val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t

Map values.

val (>|=) : 'a t ‑> ('a ‑> 'b) ‑> 'b t

Synonym to map.

val size : 'a t ‑> int

Number of elements in the queue (constant time).

val fold : ('b ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b
val iter : ('a ‑> unit) ‑> 'a t ‑> unit
val equal : 'a equal ‑> 'a t equal

Conversions

val of_list : 'a list ‑> 'a t
val to_list : 'a t ‑> 'a list
val add_seq_front : 'a sequence ‑> 'a t ‑> 'a t
val add_seq_back : 'a t ‑> 'a sequence ‑> 'a t
val to_seq : 'a t ‑> 'a sequence
val of_seq : 'a sequence ‑> 'a t
val to_klist : 'a t ‑> 'a klist
val of_klist : 'a klist ‑> 'a t
val (--) : int ‑> int ‑> int t

a -- b is the integer range from a to b, both included.

  • Since: 0.10
val (--^) : int ‑> int ‑> int t

a -- b is the integer range from a to b, where b is excluded.

  • Since: 0.17
val pp : 'a printer ‑> 'a t printer
  • Since: 0.13
\ No newline at end of file diff --git a/dev/containers.data/CCFun_vec.odoc b/dev/containers.data/CCFun_vec.odoc deleted file mode 100644 index 8e95a50b820bd6c7d7e18e27309f8c9c03488736..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2379 zcmb7FUu+ab7{A-@YO4uCA}B_~mR|3AK=0Z@Dv+3LX*nnlZAmFceK_}a=X#s&?JT=< z{R8TgA(CJ+LJmZX8MReo1Zg8_3<<#)HEIL}Lo_i)A0(P$KocHFeDIsuz1u@yH0kDM zcfQ}B`F%4}Y+|FcJJXZtdcOMB`B*HLfk%O76+A1>WDV>P-ExrUXH1>wuc!O_a}_5) zi43jlvhiB-@b#modLK`-YVpLw0YmdrEY{Q)i?ytX#hPcEW3fbx{XZUAqKqx}X^i%O zmO(7+=(f5S83cR2rfG6BW65omVi9??>(!IJTP{B~mHTAhS2uIHr8Hxk`}MMIIRtqC z%VDpqlWn?h89wcrIemE9;^_Mm18aWTv-h*(_X1B)K)W7#VDv;HSKWOxwPW|_w^z> z{`HyMs^usDC~w}>*{4zV3WaoNOMZ`skUC|NlB%n=?u{e0;OUN0vYc_XsPnAUB0M%8 z*FC5zTZW2VcFUThL%Q zOX;yh#j%J6BUynNfqJrS963~8-B`~HR`RlAN$hg#A(a4lDc2K?rgHZkpf_KVQ5sec zt%q$;7nL{Fqz<)D5Xg_pJMX}O*nn1rrO&qwSvKsz`NR-55v+~NGU3~{e8NX_@+mnH zx&c}(Xw2d^2rWHojXRK*a0a4qQ}5Q5m|YSGGSL~<)>BWIkHsQf`d(HT;-L2iOUi7N@W z;+OcQdbH0pRb(UHWK}0BDIpa(W=0DV3>XFkJNT7%)peBk8t5G?@yDPh2>@R4RK51o zhT7f~)aKE&1Dk`rogTs@U&Iy1WOSodR434k>R_U}9`eD55a(P2A?J)>;_ZM0mH0@? z#cn{xX!i(q;V}55wu(CXut3$@C?6N^VFGr-f^9;T`1%D(TZ^?Im3S)DJT0ohg%XDy zE_4sJbBra<;?_YJ>IA9SsR;)sj3;P$s^yqydIS8xpWz|6Q{aqZ&qN;g7fA9YR)d^{ z&R{70btF9+O23m9(s>U}3VH3n$rma_g~RL-aYJ~x+}Pj9#A1VqiO|HKk%>xZ;)_HP z+a?5ZsGeCt1V>v7{L3`|<(oi>-!IVc9wfKa&XE>OyxR!n0o)F>|4p&w4hm^`Qg>b0 znZR)=6xk^%!k6L5@0b`0WocboS$6^RTX+ve7E2L;-!O$>ky3xsC}Hd)sz_2ueITm5 z7Ep@|c`*m)etkc7CgEQtzhT28u1HU(2+s3M14!0{BriuK4F^N=Q@B_w?Fmb-M5XhA z9^Zb_!4BOtYqi_M+Vi3yeEB^Be%SzIDGr3|8SLc4((fYNoFbi8q;iA}7b!%~CBa_+ z-7lbW&|1;u+YKTYld$HX@Wntwx~oPhcQzFMEZp#GUy)c?xmwJN7jSb!k*YPQBBdIz ze{nYf^xQw)NL!=Aru(>?pzva-v7<&=a}zaj?ci{&cTF4Cy0BlQrO-^%Mn(Flj=Y=k KbxT-$0Lb4^ -CCFun_vec (containers.data.CCFun_vec)

Module CCFun_vec

Functional Vectors

Tree with a large branching factor for logarithmic operations with -a low multiplicative factor.

status: experimental. DO NOT USE (yet)

  • Since: 2.1
type 'a sequence = ('a ‑> unit) ‑> unit
type 'a gen = unit ‑> 'a option
type 'a printer = Format.formatter ‑> 'a ‑> unit
type 'a ktree = unit ‑> [ `Nil | `Node of 'a * 'a ktree list ]

Signature

type 'a t
val empty : 'a t
val is_empty : _ t ‑> bool
val return : 'a ‑> 'a t
val length : _ t ‑> int
val push : 'a ‑> 'a t ‑> 'a t

Add element at the end.

val get : int ‑> 'a t ‑> 'a option
val get_exn : int ‑> 'a t ‑> 'a
  • Raises Not_found: if key not present.
val pop_exn : 'a t ‑> 'a * 'a t

Pop last element.

val iter : f:('a ‑> unit) ‑> 'a t ‑> unit
val iteri : f:(int ‑> 'a ‑> unit) ‑> 'a t ‑> unit

Iterate on elements with their index, in increasing order.

val iteri_rev : f:(int ‑> 'a ‑> unit) ‑> 'a t ‑> unit

Iterate on elements with their index, but starting from the end.

val fold : f:('b ‑> 'a ‑> 'b) ‑> x:'b ‑> 'a t ‑> 'b
val foldi : f:('b ‑> int ‑> 'a ‑> 'b) ‑> x:'b ‑> 'a t ‑> 'b
val append : 'a t ‑> 'a t ‑> 'a t
val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t
val choose : 'a t ‑> 'a option
Conversions
val to_list : 'a t ‑> 'a list
val of_list : 'a list ‑> 'a t
val add_list : 'a t ‑> 'a list ‑> 'a t
val add_seq : 'a t ‑> 'a sequence ‑> 'a t
val of_seq : 'a sequence ‑> 'a t
val to_seq : 'a t ‑> 'a sequence
val add_gen : 'a t ‑> 'a gen ‑> 'a t
val of_gen : 'a gen ‑> 'a t
val to_gen : 'a t ‑> 'a gen
IO
val pp : 'a printer ‑> 'a t printer
\ No newline at end of file diff --git a/dev/containers.data/CCGraph.odoc b/dev/containers.data/CCGraph.odoc deleted file mode 100644 index 29c183923e631d1ac2edc76ec6af2518e62ca460..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13507 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 SlO2m?_wlGftayQJ`TqdU)>^Ot diff --git a/dev/containers.data/CCGraph/Dot/index.html b/dev/containers.data/CCGraph/Dot/index.html deleted file mode 100644 index 1f92574f..00000000 --- a/dev/containers.data/CCGraph/Dot/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Dot (containers.data.CCGraph.Dot)

Module CCGraph.Dot

type attribute = [
| `Color of string
| `Shape of string
| `Weight of int
| `Style of string
| `Label of string
| `Other of string * string
]

Dot attribute

type vertex_state

Hidden state associated to a vertex

val pp : tbl:('vvertex_statetable ‑> eq:('v ‑> 'v ‑> bool) ‑> ?⁠attrs_v:('v ‑> attribute list) ‑> ?⁠attrs_e:('e ‑> attribute list) ‑> ?⁠name:string ‑> graph:('v'et ‑> Format.formatter ‑> 'v ‑> unit

Print the graph, starting from given vertex, on the formatter.

  • Parameter attrs_v: attributes for vertices.
  • Parameter attrs_e: attributes for edges.
  • Parameter name: name of the graph.
val pp_seq : tbl:('vvertex_statetable ‑> eq:('v ‑> 'v ‑> bool) ‑> ?⁠attrs_v:('v ‑> attribute list) ‑> ?⁠attrs_e:('e ‑> attribute list) ‑> ?⁠name:string ‑> graph:('v'et ‑> Format.formatter ‑> 'v sequence ‑> unit
val with_out : string ‑> (Format.formatter ‑> 'a) ‑> 'a

Shortcut to open a file and write to it.

\ No newline at end of file diff --git a/dev/containers.data/CCGraph/Lazy_tree/index.html b/dev/containers.data/CCGraph/Lazy_tree/index.html deleted file mode 100644 index d81d6e6d..00000000 --- a/dev/containers.data/CCGraph/Lazy_tree/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Lazy_tree (containers.data.CCGraph.Lazy_tree)

Module CCGraph.Lazy_tree

type ('v, 'e) t = {
vertex : 'v;
children : ('e * ('v'et) list Lazy.t;
}
val map_v : ('a ‑> 'b) ‑> ('a'et ‑> ('b'et
val fold_v : ('acc ‑> 'v ‑> 'acc) ‑> 'acc ‑> ('v_t ‑> 'acc
\ No newline at end of file diff --git a/dev/containers.data/CCGraph/Map/index.html b/dev/containers.data/CCGraph/Map/index.html deleted file mode 100644 index 5c6ebc6c..00000000 --- a/dev/containers.data/CCGraph/Map/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Map (containers.data.CCGraph.Map)

Module CCGraph.Map

Parameters

O : Map.OrderedType

Signature

type vertex = O.t
type 'a t
val as_graph : 'a t ‑> (vertex'agraph

Graph view of the map.

val empty : 'a t
val add_edge : vertex ‑> 'a ‑> vertex ‑> 'a t ‑> 'a t
val remove_edge : vertex ‑> vertex ‑> 'a t ‑> 'a t
val add : vertex ‑> 'a t ‑> 'a t

Add a vertex, possibly with no outgoing edge.

val remove : vertex ‑> 'a t ‑> 'a t

Remove the vertex and all its outgoing edges. -Edges that point to the vertex are NOT removed, they must be -manually removed with remove_edge.

val union : 'a t ‑> 'a t ‑> 'a t
val vertices : _ t ‑> vertex sequence
val vertices_l : _ t ‑> vertex list
val of_list : (vertex * 'a * vertex) list ‑> 'a t
val add_list : (vertex * 'a * vertex) list ‑> 'a t ‑> 'a t
val to_list : 'a t ‑> (vertex * 'a * vertex) list
val of_seq : (vertex * 'a * vertex) sequence ‑> 'a t
val add_seq : (vertex * 'a * vertex) sequence ‑> 'a t ‑> 'a t
val to_seq : 'a t ‑> (vertex * 'a * vertex) sequence
\ No newline at end of file diff --git a/dev/containers.data/CCGraph/Seq/index.html b/dev/containers.data/CCGraph/Seq/index.html deleted file mode 100644 index 7ce3f580..00000000 --- a/dev/containers.data/CCGraph/Seq/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Seq (containers.data.CCGraph.Seq)

Module CCGraph.Seq

type 'a t = 'a sequence
val return : 'a ‑> 'a sequence
val (>>=) : 'a t ‑> ('a ‑> 'b t) ‑> 'b t
val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t
val filter_map : ('a ‑> 'b option) ‑> 'a t ‑> 'b t
val iter : ('a ‑> unit) ‑> 'a t ‑> unit
val fold : ('b ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b
val to_list : 'a t ‑> 'a list
\ No newline at end of file diff --git a/dev/containers.data/CCGraph/Traverse/Event/index.html b/dev/containers.data/CCGraph/Traverse/Event/index.html deleted file mode 100644 index 9e4d561e..00000000 --- a/dev/containers.data/CCGraph/Traverse/Event/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Event (containers.data.CCGraph.Traverse.Event)

Module CCGraph.Traverse.Event

More detailed interface

type edge_kind = [
| `Forward
| `Back
| `Cross
]
type ('v, 'e) t = [
| `Enter of 'v * int * ('v'epath
| `Exit of 'v
| `Edge of 'v * 'e * 'v * edge_kind
]

A traversal is a sequence of such events

val get_vertex : ('v'et ‑> ('v * [ `Enter | `Exit ]) option
val get_enter : ('v'et ‑> 'v option
val get_exit : ('v'et ‑> 'v option
val get_edge : ('v'et ‑> ('v * 'e * 'v) option
val get_edge_kind : ('v'et ‑> ('v * 'e * 'v * edge_kind) option
val dfs : tbl:'v set ‑> eq:('v ‑> 'v ‑> bool) ‑> graph:('v'egraph ‑> 'v sequence ‑> ('v'et sequence_once

Full version of DFS.

  • Parameter eq: equality predicate on vertices.
val dfs_tag : eq:('v ‑> 'v ‑> bool) ‑> tags:'v tag_set ‑> graph:('v'egraph ‑> 'v sequence ‑> ('v'et sequence_once

Full version of DFS using integer tags.

  • Parameter eq: equality predicate on vertices.
\ No newline at end of file diff --git a/dev/containers.data/CCGraph/Traverse/index.html b/dev/containers.data/CCGraph/Traverse/index.html deleted file mode 100644 index a4624037..00000000 --- a/dev/containers.data/CCGraph/Traverse/index.html +++ /dev/null @@ -1,7 +0,0 @@ - -Traverse (containers.data.CCGraph.Traverse)

Module CCGraph.Traverse

type ('v, 'e) path = ('v * 'e * 'v) list
val generic : tbl:'v set ‑> bag:'v bag ‑> graph:('v'et ‑> 'v sequence ‑> 'v sequence_once

Traversal of the given graph, starting from a sequence -of vertices, using the given bag to choose the next vertex to -explore. Each vertex is visited at most once.

val generic_tag : tags:'v tag_set ‑> bag:'v bag ‑> graph:('v'et ‑> 'v sequence ‑> 'v sequence_once

One-shot traversal of the graph using a tag set and the given bag.

val dfs : tbl:'v set ‑> graph:('v'et ‑> 'v sequence ‑> 'v sequence_once
val dfs_tag : tags:'v tag_set ‑> graph:('v'et ‑> 'v sequence ‑> 'v sequence_once
val bfs : tbl:'v set ‑> graph:('v'et ‑> 'v sequence ‑> 'v sequence_once
val bfs_tag : tags:'v tag_set ‑> graph:('v'et ‑> 'v sequence ‑> 'v sequence_once
val dijkstra : tbl:'v set ‑> ?⁠dist:('e ‑> int) ‑> graph:('v'et ‑> 'v sequence ‑> ('v * int * ('v'epath) sequence_once

Dijkstra algorithm, traverses a graph in increasing distance order. -Yields each vertex paired with its distance to the set of initial vertices -(the smallest distance needed to reach the node from the initial vertices).

  • Parameter dist: distance from origin of the edge to destination, -must be strictly positive. Default is 1 for every edge.
val dijkstra_tag : ?⁠dist:('e ‑> int) ‑> tags:'v tag_set ‑> graph:('v'et ‑> 'v sequence ‑> ('v * int * ('v'epath) sequence_once
module Event : sig ... end

More detailed interface

\ No newline at end of file diff --git a/dev/containers.data/CCGraph/index.html b/dev/containers.data/CCGraph/index.html deleted file mode 100644 index 58554f70..00000000 --- a/dev/containers.data/CCGraph/index.html +++ /dev/null @@ -1,36 +0,0 @@ - -CCGraph (containers.data.CCGraph)

Module CCGraph

Simple Graph Interface

A collections of algorithms on (mostly read-only) graph structures. -The user provides her own graph structure as a ('v, 'e) CCGraph.t, -where 'v is the type of vertices and 'e the type of edges -(for instance, 'e = ('v * 'v) is perfectly fine in many cases).

Such a ('v, 'e) CCGraph.t structure is a record containing -three functions: two relate edges to their origin and destination, -and one maps vertices to their outgoing edges. -This abstract notion of graph makes it possible to run the algorithms -on any user-specific type that happens to have a graph structure.

Many graph algorithms here take a sequence of vertices as input. -If the user only has a single vertex (e.g., for a topological sort -from a given vertex), she can use Seq.return x to build a sequence -of one element.

status: unstable

  • Since: 0.12

Sequence Helpers

type 'a sequence = ('a ‑> unit) ‑> unit

A sequence of items of type 'a, possibly infinite

type 'a sequence_once = 'a sequence

Sequence that should be used only once

exception Sequence_once

Raised when a sequence meant to be used once is used several times.

module Seq : sig ... end

Interfaces for graphs

This interface is designed for oriented graphs with labels on edges

type ('v, 'e) t = 'v ‑> ('e * 'v) sequence

Directed graph with vertices of type 'v and edges labeled with e'

type ('v, 'e) graph = ('v'et
val make : ('v ‑> ('e * 'v) sequence) ‑> ('v'et

Make a graph by providing the children function.

type 'v tag_set = {
get_tag : 'v ‑> bool;
set_tag : 'v ‑> unit;

(** Set tag for the given element *)

}

Tags

Mutable tags from values of type 'v to tags of type bool

type ('k, 'a) table = {
mem : 'k ‑> bool;
find : 'k ‑> 'a;

(**

  • Raises Not_found: if element not added before

*)

add : 'k ‑> 'a ‑> unit;

(** Erases previous binding *)

}

Table

Mutable table with keys 'k and values 'a

type 'a set = ('a, unit) table

Mutable set

val mk_table : eq:('k ‑> 'k ‑> bool) ‑> ?⁠hash:('k ‑> int) ‑> int ‑> ('k'atable

Default implementation for table: a Hashtbl.t.

val mk_map : cmp:('k ‑> 'k ‑> int) ‑> unit ‑> ('k'atable

Use a Map.S underneath.

Bags of vertices

type 'a bag = {
push : 'a ‑> unit;
is_empty : unit ‑> bool;
pop : unit ‑> 'a;

(** raises some exception is empty *)

}

Bag of elements of type 'a

val mk_queue : unit ‑> 'a bag
val mk_stack : unit ‑> 'a bag
val mk_heap : leq:('a ‑> 'a ‑> bool) ‑> 'a bag

mk_heap ~leq makes a priority queue where leq x y = true means that -x is smaller than y and should be prioritary.

Traversals

module Traverse : sig ... end

Cycles

val is_dag : tbl:'v set ‑> eq:('v ‑> 'v ‑> bool) ‑> graph:('v_t ‑> 'v sequence ‑> bool

is_dag ~graph vs returns true if the subset of graph reachable -from vs is acyclic.

  • Since: 0.18

Topological Sort

exception Has_cycle
val topo_sort : eq:('v ‑> 'v ‑> bool) ‑> ?⁠rev:bool ‑> tbl:'v set ‑> graph:('v'et ‑> 'v sequence ‑> 'v list

topo_sort ~graph seq returns a list of vertices l where each -element of l is reachable from seq. -The list is sorted in a way such that if v -> v' in the graph, then -v comes before v' in the list (i.e. has a smaller index). -Basically v -> v' means that v is smaller than v'. -See wikipedia.

  • Parameter eq: equality predicate on vertices (default (=)).
  • Parameter rev: if true, the dependency relation is inverted (v -> v' means -v' occurs before v).
  • Raises Has_cycle: if the graph is not a DAG.
val topo_sort_tag : eq:('v ‑> 'v ‑> bool) ‑> ?⁠rev:bool ‑> tags:'v tag_set ‑> graph:('v'et ‑> 'v sequence ‑> 'v list

Same as topo_sort but uses an explicit tag set.

Lazy Spanning Tree

module Lazy_tree : sig ... end
val spanning_tree : tbl:'v set ‑> graph:('v'et ‑> 'v ‑> ('v'eLazy_tree.t

spanning_tree ~graph v computes a lazy spanning tree that has v -as a root. The table tbl is used for the memoization part.

val spanning_tree_tag : tags:'v tag_set ‑> graph:('v'et ‑> 'v ‑> ('v'eLazy_tree.t

Strongly Connected Components

type 'v scc_state

Hidden state for scc.

val scc : tbl:('v'v scc_statetable ‑> graph:('v'et ‑> 'v sequence ‑> 'v list sequence_once

Strongly connected components reachable from the given vertices. -Each component is a list of vertices that are all mutually reachable -in the graph. -The components are explored in a topological order (if C1 and C2 are -components, and C1 points to C2, then C2 will be yielded before C1). -Uses Tarjan's algorithm.

  • Parameter tbl: table used to map nodes to some hidden state.
  • Raises Sequence_once: if the result is iterated on more than once.

Pretty printing in the DOT (graphviz) format

Example (print divisors from 42):

      let open CCGraph in
-      let open Dot in
-      with_out "/tmp/truc.dot"
-        (fun out ->
-           pp ~attrs_v:(fun i -> [`Label (string_of_int i)]) ~graph:divisors_graph out 42
-        )
module Dot : sig ... end

Mutable Graph

type ('v, 'e) mut_graph = {
graph : ('v'et;
add_edge : 'v ‑> 'e ‑> 'v ‑> unit;
remove : 'v ‑> unit;
}
val mk_mut_tbl : eq:('v ‑> 'v ‑> bool) ‑> ?⁠hash:('v ‑> int) ‑> int ‑> ('v'amut_graph

Make a new mutable graph from a Hashtbl. Edges are labelled with type 'a.

Immutable Graph

A classic implementation of a graph structure on totally ordered vertices, -with unlabelled edges. The graph allows to add and remove edges and vertices, -and to iterate on edges and vertices.

module type MAP : sig ... end
module Map : functor (O : Map.OrderedType) -> MAP with type vertex = O.t

Misc

val of_list : eq:('v ‑> 'v ‑> bool) ‑> ('v * 'v) list ‑> ('v, unit) t

of_list l makes a graph from a list of pairs of vertices. -Each pair (a,b) is an edge from a to b.

  • Parameter eq: equality used to compare vertices.
val of_hashtbl : ('v'v list) Hashtbl.t ‑> ('v, unit) t

of_hashtbl tbl makes a graph from a hashtable that maps vertices -to lists of children.

val of_fun : ('v ‑> 'v list) ‑> ('v, unit) t

of_fun f makes a graph out of a function that maps a vertex to -the list of its children. The function is assumed to be deterministic.

val divisors_graph : (int, unit) t

n points to all its strict divisors.

\ No newline at end of file diff --git a/dev/containers.data/CCGraph/module-type-MAP/index.html b/dev/containers.data/CCGraph/module-type-MAP/index.html deleted file mode 100644 index 34b99c3a..00000000 --- a/dev/containers.data/CCGraph/module-type-MAP/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -MAP (containers.data.CCGraph.MAP)

Module type CCGraph.MAP

type vertex
type 'a t
val as_graph : 'a t ‑> (vertex'agraph

Graph view of the map.

val empty : 'a t
val add_edge : vertex ‑> 'a ‑> vertex ‑> 'a t ‑> 'a t
val remove_edge : vertex ‑> vertex ‑> 'a t ‑> 'a t
val add : vertex ‑> 'a t ‑> 'a t

Add a vertex, possibly with no outgoing edge.

val remove : vertex ‑> 'a t ‑> 'a t

Remove the vertex and all its outgoing edges. -Edges that point to the vertex are NOT removed, they must be -manually removed with remove_edge.

val union : 'a t ‑> 'a t ‑> 'a t
val vertices : _ t ‑> vertex sequence
val vertices_l : _ t ‑> vertex list
val of_list : (vertex * 'a * vertex) list ‑> 'a t
val add_list : (vertex * 'a * vertex) list ‑> 'a t ‑> 'a t
val to_list : 'a t ‑> (vertex * 'a * vertex) list
val of_seq : (vertex * 'a * vertex) sequence ‑> 'a t
val add_seq : (vertex * 'a * vertex) sequence ‑> 'a t ‑> 'a t
val to_seq : 'a t ‑> (vertex * 'a * vertex) sequence
\ No newline at end of file diff --git a/dev/containers.data/CCHashSet.odoc b/dev/containers.data/CCHashSet.odoc deleted file mode 100644 index 999216606d3de9ec1b65d408b30587cc7d03f49d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4641 zcmb7GdvF!y70=y0M~PJlGa}%i-I$x3n-G#4KqmpKi;y6ecLb_c!{*+-WX-+1m%DrO z5T$7gVkvDmSYRlfc6kJWp+I2(YaPT|+Db?3qs6Mslv-(N)saDLZBg6vJ@yj8{$XbB z>4? z`-vZJyt(P+FLk#ZUGn^ymX^1xgP?JWkF&q_&*IW)KRfO%``{(r-+Qy0Pu4RX>x(khQAnlr z^&L*utaq)fW7l^(`A#=yB+WtM*SED7tW2stWu}cn#!JlGwf^{3eFq=*&c@7*pX~VQ zWZe(e92tP7xN9ycn0C_i16@B71b(@p>$<;B->1`XtM9Li7HrGYX#_|++-hD`F3)xG zVboxoty}uxmg+QDic~9dz-VUKe`G6I<*hy>{C-YTTJHJKc!c&OZ&`(zp{3j8(%QYd zU_>mLHw}-%3;N??sM&#ETCHV`PSe#4%{IF=*Yvb*%j?j*4pUo9Lfcx>AW1B*R}1>f z$)LPWr*K$46%;ue3_t>^^nf{;Q0-dw;*9AzHuE#4IMaFpf1GByocF?N&|k5%=ix!5 z18@g4a*aj{#@Ut0j7cAr*sAzQa|3^pmN&BwRe@$?GMbq&v!?C2S~~A!S(Jn*MhW9N z+j7BXMUzghm&p7vEqT-J(AYFg2&QuAGy#3En(ehwjt+C)P@HMY*cuC?k(pZ;N8zMp z3^9!ZgZ?P{FJtn3K4Vp|Sm+3y-0f4s?WUMzyJp^FK5N8KbD4TE%}AwOM$IRZ`qR07 zTQYWY#*>2aXiSL3vM!C!J$sQm*Ed9|+3V<4Gf* zvZ$GPnBjzJQd&XZ#w+A)@u}@Xw%yEYq)G8Bk&BDJ(P2*hD?xs)B5P(DZx#I)xmOoC zNlY(aFay7mqUJ)A8da>YK7;lx8T*TjeqFTPaWdQmMzna^vQuql4=>Z&aB``)^4`FY zGJ%Bdm6~Cv*qD|Rnn8k5(;Jyuxhx~5O{%}(@#0%YGW(Q2ekt&1)N%dwfN!FHc2X_h{y;xW=3@-**dsN<7c1*aIt3$s==A%-=_%>-SS6jQ;;gCWqyLk{&Wn=R z9rE#$3?m05-)X^8OoDTM&Lnp7w*QPI{t!BSjVGbh2&c->Xo_l?eTX<4T$)0qp^d#L zf%ikMe+fbUBe}-L+(J7Y;*70E3@_!AEi{4E^`{O{adgp_iu2kQE%m9-uUs!3E9Js* zlXSeWl6L|xCq5ExC$iQwdpy%-6>HF8&H9DiCUNQ_@>J|7a?_-B7+t2gB8)8cmOR+2 z!_x?r$)WpZ;r>49erXk5mTi=bkIGJV=dxl~CJ9hyIKM~C^U}zVnLU>4xrBVWXfsD( z`a&B=%vVaAfv6?A#veDG26Uln)QMe2reL}}OzGOnTQr&gDhqEajt857IzuW-#AlPczV^e~e*G-dcCsvSHSbtn%8hKLzi z>AuchWT+miYM#+Nvw7BCq)`8$ml>)X2ED_|WTT)O@N5TQ1Y9liMV)^fljjLHMmy-i z&%SKk9LKdhdX0%flMgVsmc!MwuEY4iKeHLtkD@c_F-QKN?ceP0-48=1mp9V|u@zwm z-0F*$>XmQ{OoEBRM;SChql{xX$ctkDu7f*uXyi}28{j6GAQ2VNszXBGA}DK6eJ0rC zZ_(LflQQ(T`rG~eFljQ3FZW0n`tvsh{$7{}jncOcIdH%hzNbPKGLm^Z^a>3IU=}RX zA;W#o0}DDNVj-;5Aw}iIUfb=czJu!9sQyFD)2RL()zdIeFh79mUr{}^Pe=7tR-xda z`fsu2qWUtbFGBao7=5dr|F?u%igGX{(cOJx7&`>SDR|0>W29N3S3(AlPgUdll6? zQJpSfClJyh?9WKD^JGpTbci%b?CYp7Q60q}AiLl!s#LY8j+C`I03RZJBc%8kp--ob zM+S@sBPzlp;XCAVREMK_jc|;SD-qU7GmH#F*vMUDWH`c)xo?b&LbVjtA^T7{C+KcK z*j}`$K=_G{%KI!Uj8vg=29@_h_F9C4MPviQ&n5d!2v1A)CRE-+EG*o_z%CV4r2Ey?oaxTIfl6^kHpCtR;bk(48IJCGQ;dId=iSRCQZxh^$ zQQ3mZ<`9`d_-7Hh1mQd(eSs{X@*PxG%Nva3U5fAtZPSX#pbzm1ny(V@<*2Mg<&g{U zRft#7HmwNw_YghRWAb>AL{mfH<1A9}3|=LX6Y=K>^>4N;fK9435f@5VHfZ zmgYIOXorh?5SwV86^8p!=|ts$aPtYo+o@!fbRdE{j5s+gnO~riM5Udes2FnpIm8+K zWTyO|M_efNeu)sMEDBkVBQ9cAi=@>F#I}(2Br5l#avx{CSML7}@qv)_ZN!3PeGip; zQTb}fdJb_J`!=*B?as3m%IzMJ+ka76h{^)0sadFenIl^SQn?&)6?s5qs$94VaXmjf F{|5@1;{N~u diff --git a/dev/containers.data/CCHashSet/Make/argument-1-E/index.html b/dev/containers.data/CCHashSet/Make/argument-1-E/index.html deleted file mode 100644 index 204296e7..00000000 --- a/dev/containers.data/CCHashSet/Make/argument-1-E/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-E (containers.data.CCHashSet.Make.1-E)

Parameter CCHashSet.Make.1-E

type t
val equal : t ‑> t ‑> bool
val hash : t ‑> int

Positive value

\ No newline at end of file diff --git a/dev/containers.data/CCHashSet/Make/index.html b/dev/containers.data/CCHashSet/Make/index.html deleted file mode 100644 index 9c64d2d2..00000000 --- a/dev/containers.data/CCHashSet/Make/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Make (containers.data.CCHashSet.Make)

Module CCHashSet.Make

Parameters

Signature

type t
type elt = E.t
val create : int ‑> t

create n makes a new set with the given capacity n.

val singleton : elt ‑> t

singleton x is the singleton {x}.

val clear : t ‑> unit

clear s removes all elements from s.

val copy : t ‑> t

Fresh copy.

val copy_into : into:t ‑> t ‑> unit

copy_into ~into s copies all elements of s into into.

val insert : t ‑> elt ‑> unit

insert s x adds x into s.

val remove : t ‑> elt ‑> unit

Remove the element, if it were in there.

val cardinal : t ‑> int

cardinal s returns the number of elements in s.

val mem : t ‑> elt ‑> bool

mem s x returns true iff x is in s.

val find_exn : t ‑> elt ‑> elt

find_exn s x returns y if x and y are equal, and mem s y.

  • Raises Not_found: if x not in s.
val find : t ‑> elt ‑> elt option

Safe version of find_exn.

val inter : t ‑> t ‑> t

inter a b returns a ∩ b.

val inter_mut : into:t ‑> t ‑> unit

inter_mut ~into a changes into into a ∩ into.

val union : t ‑> t ‑> t

union a b returns a ∪ b.

val union_mut : into:t ‑> t ‑> unit

union_mut ~into a changes into into a ∪ into.

val diff : t ‑> t ‑> t

diff a b returns a - b.

val subset : t ‑> t ‑> bool

subset a b returns true if all elements of a are in b.

val equal : t ‑> t ‑> bool

equal a b is extensional equality (a and b have the same elements).

val for_all : (elt ‑> bool) ‑> t ‑> bool
val exists : (elt ‑> bool) ‑> t ‑> bool
val iter : (elt ‑> unit) ‑> t ‑> unit

Iterate on values.

val fold : ('a ‑> elt ‑> 'a) ‑> 'a ‑> t ‑> 'a

Fold on values.

val elements : t ‑> elt list

List of elements.

val of_list : elt list ‑> t
val to_seq : t ‑> elt sequence
val of_seq : elt sequence ‑> t
val add_seq : t ‑> elt sequence ‑> unit
val pp : ?⁠sep:string ‑> elt printer ‑> t printer

pp pp_elt returns a set printer, given a printer for -individual elements.

\ No newline at end of file diff --git a/dev/containers.data/CCHashSet/index.html b/dev/containers.data/CCHashSet/index.html deleted file mode 100644 index abc75e6a..00000000 --- a/dev/containers.data/CCHashSet/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -CCHashSet (containers.data.CCHashSet)

Module CCHashSet

Mutable Set

status: unstable

  • Since: 0.13
type 'a sequence = ('a ‑> unit) ‑> unit
type 'a printer = Format.formatter ‑> 'a ‑> unit
module type S : sig ... end
module type ELEMENT : sig ... end
module Make : functor (E : ELEMENT) -> S with type elt = E.t
\ No newline at end of file diff --git a/dev/containers.data/CCHashSet/module-type-ELEMENT/index.html b/dev/containers.data/CCHashSet/module-type-ELEMENT/index.html deleted file mode 100644 index ddb7c32b..00000000 --- a/dev/containers.data/CCHashSet/module-type-ELEMENT/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -ELEMENT (containers.data.CCHashSet.ELEMENT)

Module type CCHashSet.ELEMENT

type t
val equal : t ‑> t ‑> bool
val hash : t ‑> int

Positive value

\ No newline at end of file diff --git a/dev/containers.data/CCHashSet/module-type-S/index.html b/dev/containers.data/CCHashSet/module-type-S/index.html deleted file mode 100644 index 1d95066c..00000000 --- a/dev/containers.data/CCHashSet/module-type-S/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -S (containers.data.CCHashSet.S)

Module type CCHashSet.S

type t
type elt
val create : int ‑> t

create n makes a new set with the given capacity n.

val singleton : elt ‑> t

singleton x is the singleton {x}.

val clear : t ‑> unit

clear s removes all elements from s.

val copy : t ‑> t

Fresh copy.

val copy_into : into:t ‑> t ‑> unit

copy_into ~into s copies all elements of s into into.

val insert : t ‑> elt ‑> unit

insert s x adds x into s.

val remove : t ‑> elt ‑> unit

Remove the element, if it were in there.

val cardinal : t ‑> int

cardinal s returns the number of elements in s.

val mem : t ‑> elt ‑> bool

mem s x returns true iff x is in s.

val find_exn : t ‑> elt ‑> elt

find_exn s x returns y if x and y are equal, and mem s y.

  • Raises Not_found: if x not in s.
val find : t ‑> elt ‑> elt option

Safe version of find_exn.

val inter : t ‑> t ‑> t

inter a b returns a ∩ b.

val inter_mut : into:t ‑> t ‑> unit

inter_mut ~into a changes into into a ∩ into.

val union : t ‑> t ‑> t

union a b returns a ∪ b.

val union_mut : into:t ‑> t ‑> unit

union_mut ~into a changes into into a ∪ into.

val diff : t ‑> t ‑> t

diff a b returns a - b.

val subset : t ‑> t ‑> bool

subset a b returns true if all elements of a are in b.

val equal : t ‑> t ‑> bool

equal a b is extensional equality (a and b have the same elements).

val for_all : (elt ‑> bool) ‑> t ‑> bool
val exists : (elt ‑> bool) ‑> t ‑> bool
val iter : (elt ‑> unit) ‑> t ‑> unit

Iterate on values.

val fold : ('a ‑> elt ‑> 'a) ‑> 'a ‑> t ‑> 'a

Fold on values.

val elements : t ‑> elt list

List of elements.

val of_list : elt list ‑> t
val to_seq : t ‑> elt sequence
val of_seq : elt sequence ‑> t
val add_seq : t ‑> elt sequence ‑> unit
val pp : ?⁠sep:string ‑> elt printer ‑> t printer

pp pp_elt returns a set printer, given a printer for -individual elements.

\ No newline at end of file diff --git a/dev/containers.data/CCHashTrie.odoc b/dev/containers.data/CCHashTrie.odoc deleted file mode 100644 index da4618c66e1177ca6210f3b0d280dda9ed32a729..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7391 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 diff --git a/dev/containers.data/CCHashTrie/Make/argument-1-K/index.html b/dev/containers.data/CCHashTrie/Make/argument-1-K/index.html deleted file mode 100644 index ab7c51b5..00000000 --- a/dev/containers.data/CCHashTrie/Make/argument-1-K/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-K (containers.data.CCHashTrie.Make.1-K)

Parameter CCHashTrie.Make.1-K

type t
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCHashTrie/Make/index.html b/dev/containers.data/CCHashTrie/Make/index.html deleted file mode 100644 index b13bc6e9..00000000 --- a/dev/containers.data/CCHashTrie/Make/index.html +++ /dev/null @@ -1,9 +0,0 @@ - -Make (containers.data.CCHashTrie.Make)

Module CCHashTrie.Make

Functors

Parameters

K : KEY

Signature

type key = K.t
type 'a t
val empty : 'a t
val is_empty : _ t ‑> bool
val singleton : key ‑> 'a ‑> 'a t
val add : key ‑> 'a ‑> 'a t ‑> 'a t
val mem : key ‑> _ t ‑> bool
val get : key ‑> 'a t ‑> 'a option
val get_exn : key ‑> 'a t ‑> 'a
  • Raises Not_found: if key not present.
val remove : key ‑> 'a t ‑> 'a t

Remove the key, if present.

val update : key ‑> f:('a option ‑> 'a option) ‑> 'a t ‑> 'a t

update k ~f m calls f (Some v) if get k m = Some v, f None -otherwise. Then, if f returns Some v' it binds k to v', -if f returns None it removes k.

val add_mut : id:Transient.t ‑> key ‑> 'a ‑> 'a t ‑> 'a t

add_mut ~id k v m behaves like add k v m, except it will mutate -in place whenever possible. Changes done with an id might affect all -versions of the structure obtained with the same id (but not -other versions).

  • Raises Transient.Frozen: if id is frozen.
val remove_mut : id:Transient.t ‑> key ‑> 'a t ‑> 'a t

Same as remove, but modifies in place whenever possible.

  • Raises Transient.Frozen: if id is frozen.
val update_mut : id:Transient.t ‑> key ‑> f:('a option ‑> 'a option) ‑> 'a t ‑> 'a t

Same as update but with mutability.

  • Raises Transient.Frozen: if id is frozen.
val cardinal : _ t ‑> int
val choose : 'a t ‑> (key * 'a) option
val choose_exn : 'a t ‑> key * 'a
  • Raises Not_found: if not pair was found.
val iter : f:(key ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val fold : f:('b ‑> key ‑> 'a ‑> 'b) ‑> x:'b ‑> 'a t ‑> 'b
Conversions
val to_list : 'a t ‑> (key * 'a) list
val add_list : 'a t ‑> (key * 'a) list ‑> 'a t
val add_list_mut : id:Transient.t ‑> 'a t ‑> (key * 'a) list ‑> 'a t
  • Raises Frozen: if the ID is frozen.
val of_list : (key * 'a) list ‑> 'a t
val add_seq : 'a t ‑> (key * 'a) sequence ‑> 'a t
val add_seq_mut : id:Transient.t ‑> 'a t ‑> (key * 'a) sequence ‑> 'a t
  • Raises Frozen: if the ID is frozen.
val of_seq : (key * 'a) sequence ‑> 'a t
val to_seq : 'a t ‑> (key * 'a) sequence
val add_gen : 'a t ‑> (key * 'a) gen ‑> 'a t
val add_gen_mut : id:Transient.t ‑> 'a t ‑> (key * 'a) gen ‑> 'a t
  • Raises Frozen: if the ID is frozen.
val of_gen : (key * 'a) gen ‑> 'a t
val to_gen : 'a t ‑> (key * 'a) gen
IO
val pp : key printer ‑> 'a printer ‑> 'a t printer

Renamed from val print.

  • Since: 2.0
val as_tree : 'a t ‑> [ `L of int * (key * 'a) list | `N ] ktree

For debugging purpose: explore the structure of the tree, -with `L (h,l) being a leaf (with shared hash h) -and `N an inner node.

\ No newline at end of file diff --git a/dev/containers.data/CCHashTrie/Transient/index.html b/dev/containers.data/CCHashTrie/Transient/index.html deleted file mode 100644 index 0fc0e08b..00000000 --- a/dev/containers.data/CCHashTrie/Transient/index.html +++ /dev/null @@ -1,7 +0,0 @@ - -Transient (containers.data.CCHashTrie.Transient)

Module CCHashTrie.Transient

Transient Identifiers

type t

Identifiers for transient modifications. A transient modification -is uniquely identified by a Transient.t. Once Transient.freeze r -is called, r cannot be used to modify the structure again.

val create : unit ‑> t

Create a new, active ID.

val equal : t ‑> t ‑> bool

Equality between IDs.

val frozen : t ‑> bool

frozen i returns true if freeze i was called before. In this case, -the ID cannot be used for modifications again.

val active : t ‑> bool

active i is not (frozen i).

val freeze : t ‑> unit

freeze i makes i unusable for new modifications. The values -created with i will now be immutable.

val with_ : (t ‑> 'a) ‑> 'a

with_ f creates a transient ID i, calls f i, -freezes the ID i and returns the result of f i.

exception Frozen

Raised when a frozen ID is used.

\ No newline at end of file diff --git a/dev/containers.data/CCHashTrie/index.html b/dev/containers.data/CCHashTrie/index.html deleted file mode 100644 index fc1d3a9e..00000000 --- a/dev/containers.data/CCHashTrie/index.html +++ /dev/null @@ -1,6 +0,0 @@ - -CCHashTrie (containers.data.CCHashTrie)

Module CCHashTrie

Hash Tries

Trie indexed by the hash of the keys, where the branching factor is fixed. -The goal is to have a quite efficient functional structure with fast -update and access if the hash function is good. -The trie is not binary, to improve cache locality and decrease depth.

Preliminary benchmarks (see the "tbl" section of benchmarks) tend to show -that this type is quite efficient for small data sets.

status: unstable

  • Since: 0.13
type 'a sequence = ('a ‑> unit) ‑> unit
type 'a gen = unit ‑> 'a option
type 'a printer = Format.formatter ‑> 'a ‑> unit
type 'a ktree = unit ‑> [ `Nil | `Node of 'a * 'a ktree list ]
module Transient : sig ... end

Transient Identifiers

module type S : sig ... end

Signature

module type KEY : sig ... end

Type for keys

module Make : functor (K : KEY) -> S with type key = K.t

Functors

\ No newline at end of file diff --git a/dev/containers.data/CCHashTrie/module-type-KEY/index.html b/dev/containers.data/CCHashTrie/module-type-KEY/index.html deleted file mode 100644 index 5d53860f..00000000 --- a/dev/containers.data/CCHashTrie/module-type-KEY/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -KEY (containers.data.CCHashTrie.KEY)

Module type CCHashTrie.KEY

Type for keys

type t
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCHashTrie/module-type-S/index.html b/dev/containers.data/CCHashTrie/module-type-S/index.html deleted file mode 100644 index 3326cb26..00000000 --- a/dev/containers.data/CCHashTrie/module-type-S/index.html +++ /dev/null @@ -1,9 +0,0 @@ - -S (containers.data.CCHashTrie.S)

Module type CCHashTrie.S

Signature

type key
type 'a t
val empty : 'a t
val is_empty : _ t ‑> bool
val singleton : key ‑> 'a ‑> 'a t
val add : key ‑> 'a ‑> 'a t ‑> 'a t
val mem : key ‑> _ t ‑> bool
val get : key ‑> 'a t ‑> 'a option
val get_exn : key ‑> 'a t ‑> 'a
  • Raises Not_found: if key not present.
val remove : key ‑> 'a t ‑> 'a t

Remove the key, if present.

val update : key ‑> f:('a option ‑> 'a option) ‑> 'a t ‑> 'a t

update k ~f m calls f (Some v) if get k m = Some v, f None -otherwise. Then, if f returns Some v' it binds k to v', -if f returns None it removes k.

val add_mut : id:Transient.t ‑> key ‑> 'a ‑> 'a t ‑> 'a t

add_mut ~id k v m behaves like add k v m, except it will mutate -in place whenever possible. Changes done with an id might affect all -versions of the structure obtained with the same id (but not -other versions).

  • Raises Transient.Frozen: if id is frozen.
val remove_mut : id:Transient.t ‑> key ‑> 'a t ‑> 'a t

Same as remove, but modifies in place whenever possible.

  • Raises Transient.Frozen: if id is frozen.
val update_mut : id:Transient.t ‑> key ‑> f:('a option ‑> 'a option) ‑> 'a t ‑> 'a t

Same as update but with mutability.

  • Raises Transient.Frozen: if id is frozen.
val cardinal : _ t ‑> int
val choose : 'a t ‑> (key * 'a) option
val choose_exn : 'a t ‑> key * 'a
  • Raises Not_found: if not pair was found.
val iter : f:(key ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val fold : f:('b ‑> key ‑> 'a ‑> 'b) ‑> x:'b ‑> 'a t ‑> 'b
Conversions
val to_list : 'a t ‑> (key * 'a) list
val add_list : 'a t ‑> (key * 'a) list ‑> 'a t
val add_list_mut : id:Transient.t ‑> 'a t ‑> (key * 'a) list ‑> 'a t
  • Raises Frozen: if the ID is frozen.
val of_list : (key * 'a) list ‑> 'a t
val add_seq : 'a t ‑> (key * 'a) sequence ‑> 'a t
val add_seq_mut : id:Transient.t ‑> 'a t ‑> (key * 'a) sequence ‑> 'a t
  • Raises Frozen: if the ID is frozen.
val of_seq : (key * 'a) sequence ‑> 'a t
val to_seq : 'a t ‑> (key * 'a) sequence
val add_gen : 'a t ‑> (key * 'a) gen ‑> 'a t
val add_gen_mut : id:Transient.t ‑> 'a t ‑> (key * 'a) gen ‑> 'a t
  • Raises Frozen: if the ID is frozen.
val of_gen : (key * 'a) gen ‑> 'a t
val to_gen : 'a t ‑> (key * 'a) gen
IO
val pp : key printer ‑> 'a printer ‑> 'a t printer

Renamed from val print.

  • Since: 2.0
val as_tree : 'a t ‑> [ `L of int * (key * 'a) list | `N ] ktree

For debugging purpose: explore the structure of the tree, -with `L (h,l) being a leaf (with shared hash h) -and `N an inner node.

\ No newline at end of file diff --git a/dev/containers.data/CCHet.odoc b/dev/containers.data/CCHet.odoc deleted file mode 100644 index 051be9f43f5612b437c0caaf3ade29e5fcb599bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2212 zcmbtUU2IfE7~OlBi4=k$f(im&vfCf9>~4YhLqw-6D1;P=5X3~Sv%6FF!u?t9ouyqA zF$SOTVL+f5qq)@9_CadXn2?x=O(^lf7!nf_H6&u9XoO%N^uY&=GxJShfXpi&b1T@ z9c~XVdPLREwmQWccX)+4Zm^$~xEltFRCXiz;MJX4%*qap=TPSWt7l2_P9~pidz7I2 zljN}i^*uL`{R8Sf9Y#Lon`rEoVv(;8zkT!LM}=Qq68Ke1?N@c7Z*jkneh_mXxZl9OWtDBlvZgEbbEm`Dg2OA@h? z5<=26{ngZdpnE6`$HOoJL5rC{pG42Xu-Lg-g% z#2nros#A#NaZ&D6sE&i&;%?ECyY(uIvqX-hL@v~|;C_j|SE4h;Fq8)`KLTd_FjJ*& zBv3r27ez8Qh#E3G_1dc<=@&zy4}FSut>mCh87H*dF|=GINRB<8-d$8mFKm*}Pi*t6 zEP||Zs&u(Qnf1sJ73(U0Qrbb)%6PO$c{He-gF6pSxidT}PGn;DFjK1J5Y~@vyRo@}?i>=k>@pX7?1Kp!d zJnWROf&^><_;IyAfUTq0dNxt~ag);Vrm)LEp9koCz5flE+7AVbHz zzi2qNT)_XqfeRRwt9YW}ENVAhJHKN|=f0d>K(}jgQF{VP9hnAsvFrK5Mh^?!t_Yk&T&>;jN_b4IQ>H*|Boknc^YLMQ{90FmLR^AHu z?UQ-Lb_%w2AhGov?C)(U(WvaoKVpIHd4MQD$4)>n$Sk&(nwB3-wNwu6)nI$pbZn3O z-`Gk6KL1ybZZetMvnIE8hsiCrE`xw)Onh`OvAqMtpPve@U4-Gz!f?wI?do-NG8d;( zYsVUgt%m_|8Wh={4^uD_PfBiGRas5j0b@6Juv>7 o4y`?Gw5$Q(DgfTpKy1yKPObd~l>U?GvDyK@QAdwp`(;A@0l9o=I{*Lx diff --git a/dev/containers.data/CCHet/Key/index.html b/dev/containers.data/CCHet/Key/index.html deleted file mode 100644 index bccb4e3b..00000000 --- a/dev/containers.data/CCHet/Key/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Key (containers.data.CCHet.Key)

Module CCHet.Key

type 'a t
val create : unit ‑> 'a t
val equal : 'a t ‑> 'a t ‑> bool

Compare two keys that have compatible types.

\ No newline at end of file diff --git a/dev/containers.data/CCHet/Map/index.html b/dev/containers.data/CCHet/Map/index.html deleted file mode 100644 index c9bf358f..00000000 --- a/dev/containers.data/CCHet/Map/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Map (containers.data.CCHet.Map)

Module CCHet.Map

Immutable map

type t
val empty : t
val mem : _ Key.t ‑> t ‑> bool
val add : 'a Key.t ‑> 'a ‑> t ‑> t
val length : t ‑> int
val cardinal : t ‑> int
val find : 'a Key.t ‑> t ‑> 'a option
val find_exn : 'a Key.t ‑> t ‑> 'a
  • Raises Not_found: if the key is not in the table.
val iter : (pair ‑> unit) ‑> t ‑> unit
val to_seq : t ‑> pair sequence
val of_seq : pair sequence ‑> t
val add_seq : t ‑> pair sequence ‑> t
val add_list : t ‑> pair list ‑> t
val of_list : pair list ‑> t
val to_list : t ‑> pair list
\ No newline at end of file diff --git a/dev/containers.data/CCHet/Tbl/index.html b/dev/containers.data/CCHet/Tbl/index.html deleted file mode 100644 index e76d3701..00000000 --- a/dev/containers.data/CCHet/Tbl/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Tbl (containers.data.CCHet.Tbl)

Module CCHet.Tbl

Imperative table indexed by Key

type t
val create : ?⁠size:int ‑> unit ‑> t
val mem : t ‑> _ Key.t ‑> bool
val add : t ‑> 'a Key.t ‑> 'a ‑> unit
val length : t ‑> int
val find : t ‑> 'a Key.t ‑> 'a option
val find_exn : t ‑> 'a Key.t ‑> 'a
  • Raises Not_found: if the key is not in the table.
val iter : (pair ‑> unit) ‑> t ‑> unit
val to_seq : t ‑> pair sequence
val of_seq : pair sequence ‑> t
val add_seq : t ‑> pair sequence ‑> unit
val add_list : t ‑> pair list ‑> unit
val of_list : pair list ‑> t
val to_list : t ‑> pair list
\ No newline at end of file diff --git a/dev/containers.data/CCHet/index.html b/dev/containers.data/CCHet/index.html deleted file mode 100644 index 776832d2..00000000 --- a/dev/containers.data/CCHet/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -CCHet (containers.data.CCHet)

Module CCHet

Associative containers with Heterogeneous Values

This is similar to CCMixtbl, but the injection is directly used as -a key.

  • Since: 0.17
type 'a sequence = ('a ‑> unit) ‑> unit
type 'a gen = unit ‑> 'a option
module Key : sig ... end
type pair =
| Pair : 'a Key.t * 'a ‑> pair
module Tbl : sig ... end

Imperative table indexed by Key

module Map : sig ... end

Immutable map

\ No newline at end of file diff --git a/dev/containers.data/CCImmutArray.odoc b/dev/containers.data/CCImmutArray.odoc deleted file mode 100644 index 1eb15f1d32083581b2da4b7101337f9ffc41df33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2915 zcmb7GZEO@p817wnBQ2&vVuE0RY46%=q3m7xuwX$KYD#JdAGRolm}c&FwzsmkyX?%i z95w_JjFK4LqLlFQV+ATPDqtfahG4*tkeI0PBZ`R%F`AfQEc}r8%lOXh-rd4Kn_PEx z_j%rV=6&9IXKl?cEa_5~D!KiK-ukGnuC5DyGW_PiZ}z!t!L}GSEaFl{!wkRK+1uM+ zDtT*BJSJF)WiUpr?^4PCi9^z&~Ez8njK%mi*dsjF+a0Y7C%U0u2^_}`(Vq#pzq z)~bP@6EotxNsyS9ssTK0IKJ6)iCIRvXBC)XTi8S%CCJth=HjS=wmP7hAcLZUO_^El zM0t-Pmtc(ohM*DR0v%JPG!9^mzc(01TQ)F80Ae|*wI+R!$v_-gV)nJrK?+&9teWAb)K#h*Uue4_QgJjuQXj4IJ@JCg*OJDzIu2j#0dd@Zr+@M zBk8_FTW)36ZyEUR+w(!NXfts~fH*>cc})8Ar^CO`>YTs4{owTOA5R29>()XMgMeqv ze)`b)PvjTYfA~Gy^Y_=Pe{L0Z3t8@MHg2r~sv5G{qFo|cYLsj%J8HW-sDle6RukEw zyl0qNRwFw0OqToj*Ucvntm?ipwr9h<%kN!M*Q$PS@baY8-ORvDzacOD;}(rz(<79R zL`pMQL4!qtJWC_4S?1Xk&%rAbEH-E(wnAG&55cEV!!(gaz(bTLsAOw~ZV*iorLnx9 zAqviz8h=;wi`&16XFOtq&$v(^4!F(~RlN)vo3SeXfxUUKl1}w&hC;rc{W|fv6T_v_rE!C^Lar zA`n&B(i-eQn%5xYaJ*dS4J@Buq2Pukz_^{nt($#^+o)Z%V zr*r)lm}_W5*d6vt#A1P;GPtl-3#~@ExEvGYgu-@KWW8LIbv-pqMA~H_1aEZFvCS)OABiSii+{R;FPPe&c$L))-rXeDoIW} zn4(^uXDSOaJbl zSrQ=wKg}CYFrIV5DHd}wT7tR)zq8un5EkX0c?ug;xV`$`+@lt;;}lTa!efR;L{qdv zA)T0c5u^`J8A}iy#@W;Z= ztwf2yyg#P8logTvcVd~p89kfkdrD47vFvY8m9PWPX7jQEul?q{a9&Q#5hy{J55v6J zesY4rws8z#EQ$(EPRzZRy1YhxG)5h7!;V8N4an=GN!ANwbhEKW8x%uccyi*Mv;n;w zNI236nkLd7Y^!ita^m?4QMx};`DrWXaGATSGL29s?-uhb%onT7OvJq2s@tZNeGZvqfH_w{!Mc>kUyxB;r%_F%Xe{-b2GZ_4nb1}+E?)<=53pA zXED#Us?cbO$)#;%mq8f?)*m&N#LWV;1h-7`C5-K^wMhJsU&sno_zgK$~d7&{9Q)}gLO zv8&PM=meN(6;oG~$w?ZM_IVpD0&)v0-W#o9Zv_c?|3TUx1OL(n>j=Sb2rwLfP&&fS zL2N~8u&~NTrYD8A^2h>;bH|@IeTm6(bB)EVsU*-#&N}W6sW&; zm(3@~<@%-$C|mfpf_#Xb!H;1%v5&L4+x4qj9B3@b=_x;Iz@jWDgOI~2JWNw&JG@{T f_#K=s;$~J@zLRqOGt!Ex%=-c!yneQL05kjtQ(k8@ diff --git a/dev/containers.data/CCImmutArray/index.html b/dev/containers.data/CCImmutArray/index.html deleted file mode 100644 index e402418a..00000000 --- a/dev/containers.data/CCImmutArray/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -CCImmutArray (containers.data.CCImmutArray)

Module CCImmutArray

Immutable Arrays

Purely functional use of arrays. Update is costly, but reads are very fast. -Sadly, it is not possible to make this type covariant without using black -magic.

  • Since: 0.17
type 'a t

Array of values of type 'a. The underlying type really is -an array, but it will never be modified.

It should be covariant but OCaml will not accept it.

val empty : 'a t
val length : _ t ‑> int
val singleton : 'a ‑> 'a t
val doubleton : 'a ‑> 'a ‑> 'a t
val make : int ‑> 'a ‑> 'a t

make n x makes an array of n times x.

val init : int ‑> (int ‑> 'a) ‑> 'a t

init n f makes the array [| f 0; f 1; ... ; f (n-1) |].

  • Raises Invalid_argument: if n < 0.
val get : 'a t ‑> int ‑> 'a

Access the element.

val set : 'a t ‑> int ‑> 'a ‑> 'a t

Copy the array and modify its copy.

val sub : 'a t ‑> int ‑> int ‑> 'a t

sub a start len returns a fresh array of length len, containing the elements -from start to pstart + len - 1 of array a.

Raises Invalid_argument "Array.sub" if start and len do not designate a -valid subarray of a; that is, if start < 0, or len < 0, or start + len > Array.length a.

  • Since: 1.5
val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t
val mapi : (int ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t
val append : 'a t ‑> 'a t ‑> 'a t
val iter : ('a ‑> unit) ‑> 'a t ‑> unit
val iteri : (int ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val foldi : ('a ‑> int ‑> 'b ‑> 'a) ‑> 'a ‑> 'b t ‑> 'a
val fold : ('a ‑> 'b ‑> 'a) ‑> 'a ‑> 'b t ‑> 'a
val for_all : ('a ‑> bool) ‑> 'a t ‑> bool
val exists : ('a ‑> bool) ‑> 'a t ‑> bool

Conversions

type 'a sequence = ('a ‑> unit) ‑> unit
type 'a gen = unit ‑> 'a option
val of_list : 'a list ‑> 'a t
val to_list : 'a t ‑> 'a list
val of_array_unsafe : 'a array ‑> 'a t

Take ownership of the given array. Careful, the array must NOT -be modified afterwards!

val to_seq : 'a t ‑> 'a sequence
val of_seq : 'a sequence ‑> 'a t
val of_gen : 'a gen ‑> 'a t
val to_gen : 'a t ‑> 'a gen

IO

type 'a printer = Format.formatter ‑> 'a ‑> unit
val pp : ?⁠start:string ‑> ?⁠stop:string ‑> ?⁠sep:string ‑> 'a printer ‑> 'a t printer
\ No newline at end of file diff --git a/dev/containers.data/CCIntMap.odoc b/dev/containers.data/CCIntMap.odoc deleted file mode 100644 index 97832cfbef76856db68a406d595edc5c7b523163..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3519 zcmb7HYiu0V72essSKtsVQou!*w}a%NDAJ>jczvnCDj- zG@!pKkBn?~g4<|Yuibgcf46>q&+t2MHcubV?0;oQ5?p*Y;P1+0dJn;M<%O9{ArpNq z8k7yA=){m7h2I4?#BVdhq?UOvYmlbv5%5kX*=}Et^ym;6Rs4Vk9e)FX-@3(gJ$j^2 zt6W#p(XuG&8}2ll%nNIe9b7;7_nW3ipWpT8v!kQ`=#QcsN2qO?PQW~eTBELK(_onT zrs0RR-ADHJo*4h#b`}oT*9gm_lTbVZn zz$pgEgXo`U_P=|{x~soke)!XSUwb@?iaU%J1pz;@Hv3l|KZWnR_4ls^dp`S{9xmMA zdq$NfwHoKN0*ZR7)s}0ss&Cq^Q=N9bNxw}EmfDEwM7?8LjcS86X~zm`m(Gm*vZ{?O zd8T479J$!Dhx9Od_~bkqyfz3UT|XH`;k8s3|Dw5tr_e1$X19agAzFGU4Cm4J(Km#F zSlia`o6b&)1+EjK6~}b2*q4Va>Bn>+fhTl%V!X4z;dUVB!nh)g(Ph$7KCDV$wFLG+ z-ez`)Hc6W**l^waJ_)Ld;yDX*!J%{a9LzD9as!ireoq%*4pEg-VkDlxwbAySd+i@CExZZ5?$|9yu95*0s zkNM0AD!Ov(sNbIncaROC@ufU%fW!k*;samNNO0nDpqR zMW+~nW#aQ(_$(l9leDSn`Af^d?()$zD^q&kcC)V zFH~dgYQV|>UWx6|8)=%G;@4Ok5x2Yyu=ew^LA{0vvqVIJ!ru zkwJ_VvIRye^+;gaP=>MG?Xm^1_C2NViGm693Dnt26xMctvCR6uLdP+AV?rlj&5dQD zr3!qi&~&W^EX{Pmo&d7>W1JUnE+W#k*6z}JfSJLh%LW*G$;_Rw8{wzvz2*Jo!$JuKHht!)bcJ*f0 zid)Hce^DGaz&6rlTe~RREortb3EMWwb|8crJ24DOH~z5YT5P~@EsGg^6cV@1Jj(BU z82J1cz}drPA4Ugr49ICV=pF|l7a>atYdx}xmUcm>@;ez1d?sx#GQUcgW(S0p*vD(d zNz3#D07PE_T(8eT9UaY&nHHStM++ld9PA_b=6eYW|AS=yz%fmT z#Q1+Jyx85`wh|W%nGSJI9-KJWo9La#xx3NR3YzOpxz4Rlx%T@&uO!(ZJfoE{rj*8P zOkwu+fn13hmuhpHx@rew_~ z(Ndm{MW8tMqOjt7I25y-PG<%6_wzlJmHd?`QimIyWii1AX&G{ohlgyzOR! diff --git a/dev/containers.data/CCIntMap/index.html b/dev/containers.data/CCIntMap/index.html deleted file mode 100644 index 762faec4..00000000 --- a/dev/containers.data/CCIntMap/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -CCIntMap (containers.data.CCIntMap)

Module CCIntMap

Map specialized for Int keys

status: stable

  • Since: 0.10
type 'a t
val empty : 'a t
val singleton : int ‑> 'a ‑> 'a t
val doubleton : int ‑> 'a ‑> int ‑> 'a ‑> 'a t
val mem : int ‑> _ t ‑> bool
val find : int ‑> 'a t ‑> 'a option
val find_exn : int ‑> 'a t ‑> 'a

Same as find but unsafe.

  • Raises Not_found: if key is not present.
val add : int ‑> 'a ‑> 'a t ‑> 'a t
val remove : int ‑> 'a t ‑> 'a t
val equal : eq:('a ‑> 'a ‑> bool) ‑> 'a t ‑> 'a t ‑> bool

equal ~eq a b checks whether a and b have the same set of pairs -(key, value), comparing values with eq.

  • Since: 0.13
val compare : cmp:('a ‑> 'a ‑> int) ‑> 'a t ‑> 'a t ‑> int

Total order between maps; the precise order is unspecified.

  • Since: 0.13
val update : int ‑> ('a option ‑> 'a option) ‑> 'a t ‑> 'a t
val cardinal : _ t ‑> int

Number of bindings in the map. Linear time.

val iter : (int ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val fold : (int ‑> 'a ‑> 'b ‑> 'b) ‑> 'a t ‑> 'b ‑> 'b
val mapi : (int ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t
  • Since: 0.17
val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t
  • Since: 0.17
val choose : 'a t ‑> (int * 'a) option
val choose_exn : 'a t ‑> int * 'a
  • Raises Not_found: if not pair was found.
val union : (int ‑> 'a ‑> 'a ‑> 'a) ‑> 'a t ‑> 'a t ‑> 'a t
val inter : (int ‑> 'a ‑> 'a ‑> 'a) ‑> 'a t ‑> 'a t ‑> 'a t

Whole-collection operations

type 'a sequence = ('a ‑> unit) ‑> unit
type 'a gen = unit ‑> 'a option
type 'a klist = unit ‑> [ `Nil | `Cons of 'a * 'a klist ]
val add_list : 'a t ‑> (int * 'a) list ‑> 'a t
val of_list : (int * 'a) list ‑> 'a t
val to_list : 'a t ‑> (int * 'a) list
val add_seq : 'a t ‑> (int * 'a) sequence ‑> 'a t
val of_seq : (int * 'a) sequence ‑> 'a t
val to_seq : 'a t ‑> (int * 'a) sequence
val keys : _ t ‑> int sequence
val values : 'a t ‑> 'a sequence
val add_gen : 'a t ‑> (int * 'a) gen ‑> 'a t
  • Since: 0.13
val of_gen : (int * 'a) gen ‑> 'a t
  • Since: 0.13
val to_gen : 'a t ‑> (int * 'a) gen
  • Since: 0.13
val add_klist : 'a t ‑> (int * 'a) klist ‑> 'a t
  • Since: 0.13
val of_klist : (int * 'a) klist ‑> 'a t
  • Since: 0.13
val to_klist : 'a t ‑> (int * 'a) klist
  • Since: 0.13
type 'a tree = unit ‑> [ `Nil | `Node of 'a * 'a tree list ]
val as_tree : 'a t ‑> [ `Node of int * int | `Leaf of int * 'a ] tree

IO

type 'a printer = Format.formatter ‑> 'a ‑> unit
val pp : 'a printer ‑> 'a t printer
  • Since: 0.13

Helpers

\ No newline at end of file diff --git a/dev/containers.data/CCMixmap.odoc b/dev/containers.data/CCMixmap.odoc deleted file mode 100644 index fc62723450307bc3abf9721fa6ffd40b4450b60e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4122 zcmb7GZH!b`8J=@Fr*;QJA*5=pg|i>9yRgiDVZj#YT_{jO7U?bp8>O4ObI_WG7be>`Vt2Y37;ms>QM%ProU%jLJ-p38OQ zlK;yMHR2?h8#0r4%dk}o_)#Y;^M^zzd~ZUy!ixgF->O6+FcUMm2($G;XoXR59~Z}J z!gs0yj4SftseCSHL|pw5B8=f~eNQdSiWj3$`rV=1+jneHq(+-hUGd z$#Q_V4Yb|FronHJe|hkJ{2$Czk=j^6ApDSb4HqV$(Z`@cmydc?!TU3LZgNC&>F4su z9?uoGcwj&sP#B2f77ob_>O;4P(iDCpoK%NffRjNDE(C?@i(57o%a%JKxL4vsdw2El zuq-$_hdTkUSV71weZc*^QLjS!5 zGdbPfSNMWSS0>5EZC15{ScUIel^vd6wZg49Pz>U}`cJ;QWN!5G;Rjc~yKn!iXBQ{Q zn!UoG#M4QE$IsAzTs!;z(w=+Pcb&Ta_*>`Ac=q#wU+k4_-rMLAIB)6gEhD$Rfm8L| z-lLv>IH*}g(KH%*$HpV4V)xpjWJQ&*@146}`KJBC+bzh^!@WX8#<`5C&g z8`Ua`q2sye@wny0kjt%NQ3QeK^AbLjstbsa>3?*kw&MXrh$Nzc17Jr%Gk z;v2j?nNbR6Sf$3SbiQW09Js3JOwF-C?=e+<475WXMPOtnWR|)qToCbn5!5`_mR!)$ zvfgC&fL`KGh}#MCKR`9x`EgP4+=)P2EodyoiQ{(k2y~%4lqgEA8M>2h*22*hO1{-z zO?HviO|n1GjvGPoYTb%x6)~AMMI`0elXgNfB{8%BO@K!h0O?wwAtwr*?v{{rj~3uW zM+yEF($*arl9oW0vJ^zOg9`m<*+FSnBTPFKkL+ta_nnC{q(f>j$}V;9@xrl^7r8bj z!o$!?;KE0>N=q35RFvhUEP6N~l$?Q2bt~tOi;2(yyu{K*dmt^7GZcsCtt^$-+m}Zxuj#GVNGh z5DhPnrwq<2ea~rEziqFIs`Asn3l-8Vr)(*?fx7R}4K7y;u|9A^{k)T;y++TbI6qaa zJH|Z^uSc?I{?_fF(Z`^2pqcN&5-&QKOqu+FP8yiY5v%}OOS&x7HzS`&z5h{qXJmF$robO)jP&>ln8A;twMVmiSRO*?jO^-?VUOXY41L{DrP2sFOAsTg zpdE>Fb7yvZY;9H)V_r##w<&XxJ%B&l6Gi!2RPw#5a)0BLXxxTc*tGK*2@=rOvNEzm za-cjptr^@44djibLqEAnwI1Sravq_XkZJxBZCSNnUZmLlcATVXI;W1QAa-jHv5svT zBPG>jrYqwvBih(h4Y;uWrwf3osC^})=Hq=FR6nPPsBzAW742Ufc@RYA(}~`K@y*C@ z6j@z_OFJP^&GIGPKPa*@^wV@nT2)L!Fam*STM~b8o*55x$oF>ay*G6}p1n$MA8P#) zM*2l&?567wzq}+qN!QXfv^xc$U9>ZGd?#J69na9uQoKQRniuq0n;Ewy)A0pU-Z)?f zah{8>(t#nmrZtoSVQV^xXK6p}O+hx${qzyKPlMb~N9jlkV$!h;WIMG@I-;{h_cEiC z8LR0kl{~tS86D7>8SUy$nxO}ovEIbG%`}<8wcl}Otb~d(RkXwmWM4M!A!gjgjL%$Q z#&TvXO<`-y*qPx*%-9YmitbobB9kVZ%n`H?ED zzcO-$k*63rt(pFvk(20y)cgZx%h7qLZ zPwEgxDLCt9f?i9Q@jj}7V9x1YU(U!8Mrw?Bs>@+=7b8cpWW;5pnzr)_MviMdM%oy8 fjFE#G5{mDm6lpE;)Ib_wi&|9c!sP}8sLTDoV;aSX diff --git a/dev/containers.data/CCMixmap/Make/argument-1-X/index.html b/dev/containers.data/CCMixmap/Make/argument-1-X/index.html deleted file mode 100644 index 7c387271..00000000 --- a/dev/containers.data/CCMixmap/Make/argument-1-X/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-X (containers.data.CCMixmap.Make.1-X)

Parameter CCMixmap.Make.1-X

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCMixmap/Make/index.html b/dev/containers.data/CCMixmap/Make/index.html deleted file mode 100644 index f4dc7647..00000000 --- a/dev/containers.data/CCMixmap/Make/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -Make (containers.data.CCMixmap.Make)

Module CCMixmap.Make

Parameters

X : ORD

Signature

type key = X.t
type t

A map containing values of different types, indexed by key.

val empty : t

Empty map.

val get : inj:'a injection ‑> key ‑> t ‑> 'a option

Get the value corresponding to this key, if it exists and -belongs to the same key.

val add : inj:'a injection ‑> key ‑> 'a ‑> t ‑> t

Bind the key to the value, using inj.

val find : inj:'a injection ‑> key ‑> t ‑> 'a

Find the value for the given key, which must be of the right type.

  • Raises Not_found: if either the key is not found, or if its value -doesn't belong to the right type.
val cardinal : t ‑> int

Number of bindings.

val remove : key ‑> t ‑> t

Remove the binding for this key.

val mem : inj:_ injection ‑> key ‑> t ‑> bool

Is the given key in the map, with the right type?

val iter_keys : f:(key ‑> unit) ‑> t ‑> unit

Iterate on the keys of this map.

val fold_keys : f:('a ‑> key ‑> 'a) ‑> x:'a ‑> t ‑> 'a

Fold over the keys.

Iterators

type 'a sequence = ('a ‑> unit) ‑> unit
val keys_seq : t ‑> key sequence

All the keys.

val bindings_of : inj:'a injection ‑> t ‑> (key * 'a) sequence

All the bindings that come from the corresponding injection.

type value =
| Value : ('a injection ‑> 'a option) ‑> value
val bindings : t ‑> (key * value) sequence

Iterate on all bindings.

\ No newline at end of file diff --git a/dev/containers.data/CCMixmap/index.html b/dev/containers.data/CCMixmap/index.html deleted file mode 100644 index 9b9da8ad..00000000 --- a/dev/containers.data/CCMixmap/index.html +++ /dev/null @@ -1,25 +0,0 @@ - -CCMixmap (containers.data.CCMixmap)

Module CCMixmap

Maps with Heterogeneous Values

status: experimental

      module M = CCMixmap.Make(CCInt)
-
-      let inj_int = CCMixmap.create_inj()
-      let inj_str = CCMixmap.create_inj()
-      let inj_list_int = CCMixmap.create_inj()
-
-      let m =
-        M.empty
-        |> M.add ~inj:inj_int 1 1
-        |> M.add ~inj:inj_str 2 "2"
-        |> M.add ~inj:inj_list_int 3 [3;3;3]
-
-          assert (M.get ~inj:inj_int 1 m = Some 1)
-          assert (M.get ~inj:inj_str 1 m = None)
-          assert (M.get ~inj:inj_str 2 m = Some "2")
-          assert (M.get ~inj:inj_int 2 m = None)
-          assert (M.get ~inj:inj_list_int 3 m = Some [3;3;3])
-          assert (M.get ~inj:inj_str 3 m = None)

change of API, the map is last argument to make piping with |> easier since 0.16.

  • Since: 0.9
type 'a injection

An accessor for values of type 'a in any map. Values put -in the map using a key can only be retrieved using this -very same key.

val create_inj : unit ‑> 'a injection

Return a value that works for a given type of values. This function is -normally called once for each type of value. Several keys may be -created for the same type, but a value set with a given setter can only be -retrieved with the matching getter. The same key can be reused -across multiple maps (although not in a thread-safe way).

module type S : sig ... end
module type ORD : sig ... end
module Make : functor (X : ORD) -> S with type key = X.t
\ No newline at end of file diff --git a/dev/containers.data/CCMixmap/module-type-ORD/index.html b/dev/containers.data/CCMixmap/module-type-ORD/index.html deleted file mode 100644 index 1a27ae60..00000000 --- a/dev/containers.data/CCMixmap/module-type-ORD/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -ORD (containers.data.CCMixmap.ORD)

Module type CCMixmap.ORD

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCMixmap/module-type-S/index.html b/dev/containers.data/CCMixmap/module-type-S/index.html deleted file mode 100644 index e188bea9..00000000 --- a/dev/containers.data/CCMixmap/module-type-S/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -S (containers.data.CCMixmap.S)

Module type CCMixmap.S

type key
type t

A map containing values of different types, indexed by key.

val empty : t

Empty map.

val get : inj:'a injection ‑> key ‑> t ‑> 'a option

Get the value corresponding to this key, if it exists and -belongs to the same key.

val add : inj:'a injection ‑> key ‑> 'a ‑> t ‑> t

Bind the key to the value, using inj.

val find : inj:'a injection ‑> key ‑> t ‑> 'a

Find the value for the given key, which must be of the right type.

  • Raises Not_found: if either the key is not found, or if its value -doesn't belong to the right type.
val cardinal : t ‑> int

Number of bindings.

val remove : key ‑> t ‑> t

Remove the binding for this key.

val mem : inj:_ injection ‑> key ‑> t ‑> bool

Is the given key in the map, with the right type?

val iter_keys : f:(key ‑> unit) ‑> t ‑> unit

Iterate on the keys of this map.

val fold_keys : f:('a ‑> key ‑> 'a) ‑> x:'a ‑> t ‑> 'a

Fold over the keys.

Iterators

type 'a sequence = ('a ‑> unit) ‑> unit
val keys_seq : t ‑> key sequence

All the keys.

val bindings_of : inj:'a injection ‑> t ‑> (key * 'a) sequence

All the bindings that come from the corresponding injection.

type value =
| Value : ('a injection ‑> 'a option) ‑> value
val bindings : t ‑> (key * value) sequence

Iterate on all bindings.

\ No newline at end of file diff --git a/dev/containers.data/CCMixset.odoc b/dev/containers.data/CCMixset.odoc deleted file mode 100644 index 9d1367cd2ae8fdee26ed9845862ed3f3c2663e73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1691 zcmb7EO=u)V6ztSyaMDgrV@Sq0|iXa|5coE;LnaoabS+t>;nyOdd``-7y zDjCUevF6pi>RbCCed##PB918>kKuUq$PcB^EEYUfUc@xJQCeMnA>L732i0G{{(JkI z^-EK~9N&0lW9sZ*LxB69cAPV1$GP`U9Q=OAnRCqlf^qN3jk(nfOuoFvHOMwR%Qa8s zCKp_03f5US<0>$L*(+cw0ru-+=vEDuAQm{`16TpUw`o!;<62=Ns{Ws%8W^Q?8jH=l z!=V(gGJ*%-Nly>P|6Y3rX!~`fv4rGmciyN&{mvT=C^m|tt#JuVDV}O5ZB77N4zMN@ z4z=>~=)}JR>z2*RFtC1?z{X@Cau|n}%7J-juIkllf%~vAPpz_~i-Pl1uJ$S&F^DpwWkGp-2+wZx*{c!N}BbBokN_)S*`uzt% ze)ObDL!Uh6pIFR8@M+)gU|qh76Dj;{nQo~b3;BdE{f$-@cOyUIZI*R)wZ8h@g{yn~ z3-;54=MMTioo0}mz2if-G^5d2`Sg6#R)@aoTPKmjI;R|_2R$@ca2(KQ&o*YUh4ys0 z37LqmXB>*SR0J)7g&|i8*btB42ms7(ae>qvVK0iP7 zDWdO|$CgE&7a>eJ)0~iT{Uj|}T6dU+kO^pU$P|xmvnWs|n|FF)#K)$`+#XzEVaJ+z z2pqw7tUDM#Vt_fD5G#mcrDGB5LOYcSFfjnBJ3OV672tg?AjT3q$fLvhoMxaHT92ys z@LJ~8Yf|GfvX2%OYjZCMZU!Ib`MYx{ou=8LE8Jx(gw-H>!rmJa`1}>RLDV5UWh38k zUmhy;CMifVdH8ED74#{PG)`DgVI|Zilh2VJW_PAfQ!Ia|y~&q6cuqsYnNU{3LR+R( zP&ycg6e~ELE}mR2D4kAK#%IM|GlZU@vhti#B2V|SE$3!{-L=KKD@5N#15ua1nng(B zUKvAM<`+S>=zS$ZeAF;vb-R=a{^bfOj}1AU`T8g`rQ5VR&&!^UrLgNZ{T~aMc7yK- zlDM=+-D0TMCpjKj#*X#Za+e^9Pf|@j; y!TS?T_DKm!K6U2tQpnOM#y5h}H?Cz#3+;sW1iRM52UZb^RqN2wpT#EyZ^%EA!&zeh diff --git a/dev/containers.data/CCMixset/index.html b/dev/containers.data/CCMixset/index.html deleted file mode 100644 index 36c2301f..00000000 --- a/dev/containers.data/CCMixset/index.html +++ /dev/null @@ -1,17 +0,0 @@ - -CCMixset (containers.data.CCMixset)

Module CCMixset

Set of Heterogeneous Values

      let k1 : int key = newkey () in
-      let k2 : int key = newkey () in
-      let k3 : string key = newkey () in
-      let set =
-        empty
-        |> set ~key:k1 1
-        |> set ~key:k2 2
-        |> set ~key:k3 "3"
-      in
-      assert (get ~key:k1 set = Some 1);
-      assert (get ~key:k2 set = Some 2);
-      assert (get ~key:k3 set = Some "3");
-      ()
  • Since: 0.11
type t

A set of values of heterogeneous types

type 'a key

A unique "key" to access a value of type 'a in a set

val newkey : unit ‑> 'a key

newkey () creates a new unique key that can be used to access -a 'a value in a set. Each key created with newkey is distinct -from any other key, even if they have the same type.

Not thread-safe.

val empty : t

Empty set.

val set : key:'a key ‑> 'a ‑> t ‑> t

set ~key v set maps key to v in set. It means that -for every set, get ~key (set ~key v set) = Some v.

val get : key:'a key ‑> t ‑> 'a option

get ~key set obtains the value for key in set, if any.

val get_exn : key:'a key ‑> t ‑> 'a

Same as get, but can fail.

  • Raises Not_found: if the key is not present.
val cardinal : t ‑> int

Number of mappings.

\ No newline at end of file diff --git a/dev/containers.data/CCMixtbl.odoc b/dev/containers.data/CCMixtbl.odoc deleted file mode 100644 index 760f6f8df60c70c66a773d21054a5f564ac16c2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3460 zcmb7GU1$_n6y6QH#cWY3MWGLEZ#F;fYOc5Pb9S-3;H2SE~kheQLSP6BU#C^o!EO!~yGs zuiM)2!As^H@7TQ?KW;uS`qRd8Nd;KnpUHIX&t%p;m&rVJe_bZimx-PzOs*@8qU&Q? z6m}Q)QPChXRJR#9Zut$ekNM2wb>=c22=WGN2`$2f+N8%F((wJJ*jcUCVQHXO4DM8& zIqK-#tvV7jDftcR&I{sm(y*LzrSRGb>NIV(6QZ0g0Pz2a{MgJVmOD3VxjxxL63P|B zW7KEx-#Jn$lU=(Ch4ylgWaUyaGTgE3%_FYmSEvxo^Jm$yfZAk=yNsloR_c)VT?oH3 zNsdvAv{-KEO2LQ@jPWuu(q6YpveGnn7#S%)S;9mM;d_=_U&(Q$94jEkTO~@pNQ(QI zZS!I(-z8VziJ`1I+2H{Jf_+Wp=OUU16%^OG?x zjLt4y&JFhXFfGFF$uZKvS>elB5f3f2>jJd{CJ3())2h{&$56pmlZi@UrorSTX;P0m zI9W(^rnrSdxE|uMrpE-VhGCJcgCKZ44`ZjIX-kl|hidX8v5b|$5X|r`?n+GWkGX^z z1`~pNqz2zM7DPa{=rCglbz2H`g&b8_n}J_|2Qsas69{BNF)=ZyOSo&dh|T~bv?N<# zCQ&Q=h9wFM%xe(=d~kUJQ;%Vuzxr+N;D8!qfbmR8T@n{K4-j=DAXA5yK-z+_Wx=o# z)=35u^}y;Lh`gwM6^0jj!76xhIcMeeNJS#d(%jk}mZ$~{*X)7A%nv-EtdszT)F-m~ zQXWd`;3FW8;y_v@SB1;~Em8|ysVo7CE}GH?4Gj1N_S`j?jKHV?7UMGaa5-7&zM*bi+~-}Qos5>?N*<(d)} z$|7OJ2nS<7M`tht>_x8abYn7_N;eDF6r2dZ_@g77w-o<7eKklRQ;kn1sgwfPj7UfM zO)@{;u)sS`AbjksxYIqW-caMBqD5EAQ{11e@xV2qTMmI#4Bj)q4j2h3fQVQvxnht& z3aO@0suxVogu4Z!qoN7l&J3L#=Q}ul*yacfWo;h}*vzf_4P-Yu6*xM;0L(hjgqq@X zQu2H*x1uQDNKx|Hjs1qrsD~T(PT&>T0cJf+#h5d;zMP_IkZWm>D{+wi0gpL+fk|=6 zVR)*}_oUC*UH%u^hwiDTcq~6{?WWPWL*@kswC* zt2v!k6q^PMBf|`;Hpct5;Cq*u>W?VV?7=da7y5M0?HHDr35+h+0kJHIFnX1Vm^C21@=x13_@Z! G`1}tU4DVC` diff --git a/dev/containers.data/CCMixtbl/index.html b/dev/containers.data/CCMixtbl/index.html deleted file mode 100644 index dec2856d..00000000 --- a/dev/containers.data/CCMixtbl/index.html +++ /dev/null @@ -1,32 +0,0 @@ - -CCMixtbl (containers.data.CCMixtbl)

Module CCMixtbl

Hash Table with Heterogeneous Keys

From https://github.com/mjambon/mixtbl (thanks to him). -Example:

      let inj_int = CCMixtbl.create_inj () ;;
-
-      let tbl = CCMixtbl.create 10 ;;
-
-      OUnit.assert_equal None (CCMixtbl.get ~inj:inj_int tbl "a");;
-
-      CCMixtbl.set inj_int tbl "a" 1;;
-
-      OUnit.assert_equal (Some 1) (CCMixtbl.get ~inj:inj_int tbl "a");;
-
-      let inj_string = CCMixtbl.create_inj () ;;
-
-      CCMixtbl.set inj_string tbl "b" "Hello";
-
-      OUnit.assert_equal (Some "Hello") (CCMixtbl.get inj_string tbl "b");;
-      OUnit.assert_equal None (CCMixtbl.get inj_string tbl "a");;
-      OUnit.assert_equal (Some 1) (CCMixtbl.get inj_int tbl "a");;
-      CCMixtbl.set inj_string tbl "a" "Bye";;
-
-      OUnit.assert_equal None (CCMixtbl.get inj_int tbl "a");;
-      OUnit.assert_equal (Some "Bye") (CCMixtbl.get inj_string tbl "a");;
  • Since: 0.6
type 'a t

A hash table containing values of different types. -The type parameter 'a represents the type of the keys.

type 'b injection

An accessor for values of type 'b in any table. Values put -in the table using a key can only be retrieved using this -very same key.

val create : int ‑> 'a t

create n creates a hash table of initial size n.

val create_inj : unit ‑> 'b injection

Return a value that works for a given type of values. This function is -normally called once for each type of value. Several keys may be -created for the same type, but a value set with a given setter can only be -retrieved with the matching getter. The same key can be reused -across multiple tables (although not in a thread-safe way).

val get : inj:'b injection ‑> 'a t ‑> 'a ‑> 'b option

Get the value corresponding to this key, if it exists and -belongs to the same key.

val set : inj:'b injection ‑> 'a t ‑> 'a ‑> 'b ‑> unit

Bind the key to the value, using inj.

val find : inj:'b injection ‑> 'a t ‑> 'a ‑> 'b

Find the value for the given key, which must be of the right type.

  • Raises Not_found: if either the key is not found, or if its value -doesn't belong to the right type.
val length : 'a t ‑> int

Number of bindings.

val clear : 'a t ‑> unit

Clear content of the hashtable.

val remove : 'a t ‑> 'a ‑> unit

Remove the binding for this key.

val copy : 'a t ‑> 'a t

Copy of the table.

val mem : inj:_ injection ‑> 'a t ‑> 'a ‑> bool

Is the given key in the table, with the right type?

val iter_keys : 'a t ‑> ('a ‑> unit) ‑> unit

Iterate on the keys of this table.

val fold_keys : 'a t ‑> 'b ‑> ('b ‑> 'a ‑> 'b) ‑> 'b

Fold over the keys.

Iterators

type 'a sequence = ('a ‑> unit) ‑> unit
val keys_seq : 'a t ‑> 'a sequence

All the keys.

val bindings_of : inj:'b injection ‑> 'a t ‑> ('a * 'b) sequence

All the bindings that come from the corresponding injection.

type value =
| Value : ('b injection ‑> 'b option) ‑> value
val bindings : 'a t ‑> ('a * value) sequence

Iterate on all bindings.

\ No newline at end of file diff --git a/dev/containers.data/CCMultiMap.odoc b/dev/containers.data/CCMultiMap.odoc deleted file mode 100644 index acdc26bbdd753707020f6ebc2b2671bcf3fdc79e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6681 zcmb7I4RjRM70$eQmqS4Q6pBI63E2(#-6i}AifjS|BLt9NMKMfvCuC%IC+<#y0ZVBQ zA}ZR{6uL5MbJX4heGSIN?WbfYOVHQwQ}qckJ_qGt+x05&4wzi<&f-T-u=G& z^X_~1-gOdAys|1XDl&5I<_C}D<>f{32k_@x_%mRCH14Eb(@tBNY$Rd2=8m!{Q|eoj zu3c}o#76F|d%XJPNTl-2>|={c+n%F>qTp~|UQatO@4{4G-r%)8^YTJ@{{KltiRb%= zs$;%a!nLJPTP#L<`u?R;%v91&yH+M`CTpEc%5-bYtR2sKBikR@(D%^1N0(2%;nxaIk=*iqm23QhFHI}ke%!^hp8*BNR}+inb>DBz0UadbDGSUAt4 z1zrcI$S+!MwR^PiD6Zlz&JWX zNrd<;_KmppY^M&FGP(vE4*)l=unwP0*D{>6GVUDATP1TlehR(V!--qK) zYuXil&uUFIS{Y`sbo(64hb3Ppx48&Uryx5OQf5x*W+m=SE>Qx%UkI#vM6&H;Y@qcL zAAL9_X!)TgC&|M(t`;Ad+h0$33Tg0!$%7^weo<2YmaX7_7E#d3LRotyPrGQ&W8BxQ zG7hvpJVsYb8!ijuk#*86NTV09Cl(@gwz{D%7V1D7E_?_}{G2eqz!-jF9lOf1R@^-| z&1gk4UeHXGG*&2KH#PCCx@syuVTR&8!)-BJvK59Mu_C#hLlfC)YO*t!gl@Cx8YX6R z+Hrf?X}*F+IO#;r=PQ-knL_Pssdi-;Z#0viuE;zyWd)w+pi30g6wtX6de4ZslWIY| z%;*X89oI}6PA0)}EFI8v3t&d^v@ss~Q%SSCINREY2N+p8D#W9asxnfed@p3+ne;nC zZl=}py|D&{h37|*z!(Obw z5z8gS=>$SUEH6DEL#5`o**YC3R6Q*nDJwC*y~RQcrl|6SWe3QNZgr=Bu**Q^ayz@| zVA@wY2}}WKc%RYXzW3oyAh(9<&Esw1@Z!r=c!!156G{9{0hi%!MF{`b3mTOP3fXOke9_< z4E`^G{9J1KA&@`CfE?k`+Xv()Kn}~L13*qHD-HqqhkAYr$Z59IUGylBj|J(|K%M~d zxJ07XFO>B2p!ZkLFM-}yAYTQ&w?MuQA!(qtfWtaJ^>xs%N_X~2s*Y$h=G;|x=JO`0QBiG3__RBd;qOC=(QL?evbPA!K~e( za05Y?S0&07fPNh+Q)`!iz8Ljw2eM6Ii-3F|$bD+P1oZ0z;Y!dQ6y7W(tAOA}-lHVP zfqr8*;>$r_9RRCAzXgGJ0l7n9rvbSQ$U23+N(ck_96a> z0sV1_SPS}LiC7OL4J4%ycY%H^Kx_p48HwlwUF0%o_XAlDL>o z`}g2=10=2__ksTBK=J_SCsA^#ko+-_B|xrMl23yEK_Gb)^p8<;s*uF|t_Bh;J_q_2 zEQey^TF2~o5$FZ{YRBhS0Gn@>Qhx+88ORlQm?nvQJHaGTC6LPk^t(XI6#9LjC5RTn z9|2XZ#V0^6M~pJ|GoTSc!X-%_&>E?eP#_b5Opu}^ALt||I@TAW{eWJ@?7JVYA^%Vf zUP>e9uW%|CVF3w7GHi}l_nK?9WUQ=}cC$vh(se4alAA3p*!*XWM$27cS=e5za10mA zMmAzhGvm#Mm9$a_$aUkxlU9>EycgDPhP4ug>jVWVV=rrVW&Nr!%yh!QJ_T!6)=IWV zFt*{5k*jhu*LAN?^zNhR3wpz+rx4SIBAdIt9319)@a;DFmUY`| zgaW#YMTLgwMLaiYNp4^Qy6*tn2-=(d25Je3v1&HDOw2}VawuWSE4Z>!)ojqAGHI|d zsXK_)(NUaM7QH#$#-oXHsxgghixsz<%z5$zSmi75%Uk-248#?1`QXJ)d2 zhXT8?Nx9ZHfis7lj=Kh1W37779$>9xE@E19nw61&Mg$LeuJ{@rv4dw3iN+9{0#0;i zxt!XRHThxXAr1>c?ArDx)AoVLGX<%D^@qc3ttPE&xld)^!w08^I zCrWTG48oRQDTc$qCPN+u)>C4SowQ6g^QA4L#k4cQq$qn!x`xM-ekQ1omon;{xe>`7 zSoY1xACqQ#oE-WI@)Kfk3?f`si*w}Jy>T$qF2iq3(%hv=+_fMc&q(4QabkU)&$526 zxKHSrGCr8*tS|qc3b^c98cs+JM}&s$T*GmBV`&4pimD*^;hFYw%kcNGM(+x|pe7rQ zt*()=+}2Dw%c7rhWbk=Ato*=IFV*~osp%|sTG;f(b-k-}jVWjDRONP~yE6Q;;hQTf z63Rd$OdBm?dO+)|6fFn_+K3uxS*nOLCr4P0Fci-vVy@-GEnlf;FGLAy3v)1Q{Hwan z+&M-LSi&p;S|CabXtlhofHsX?k-W$0D8+Af8Un5|c8C23$<5LpI#$s%N*eYJ7uR#U zWZTca1ryr_J;w423A9bZh}j|@E0yMBrA$_&5%j2)!n=j=QX#w!6#yN?$A=y_m$LDp z#!lE74|*&LW{8=X7NGxK4FEug0UZkJ0>|<;1S7!dyXZimL62Afv>e$B#2^u>Da1w` zgVirbGy&+PK*x)7g+$|k3a252vg!f(?DgvM4N%GRHmeWeg{oSVcwoKS^!-S^foM( zg5U>)?@d7F1DQwb#h+V%Tn%InohoRz z0+|J*9#f)=Vk^8%yxj$4CJv5L8TMl>*h$Uc^|<2;?h3ejt$8g4JOECXpwAJcQ;<;^w^F zy;Gv^;&g#aWBJl4Aftd(Nz_L;8Yvy00y!jfe1?OR(D5aZD3FMd22IB~Op1fnlSwfj zK|4>4VW9N~QURn~AqKHQO#Lwg$m?iGi8!$r0|^5Osl_57?*)=2K;A;hLLrHSC_GF_ zR^_HP(8lqx4ag8*n1apZr|M)PLjjNr6>b{neF6 -1-K (containers.data.CCMultiMap.Make.1-K)

Parameter CCMultiMap.Make.1-K

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCMultiMap/Make/argument-2-V/index.html b/dev/containers.data/CCMultiMap/Make/argument-2-V/index.html deleted file mode 100644 index a4b4688d..00000000 --- a/dev/containers.data/CCMultiMap/Make/argument-2-V/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -2-V (containers.data.CCMultiMap.Make.2-V)

Parameter CCMultiMap.Make.2-V

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCMultiMap/Make/index.html b/dev/containers.data/CCMultiMap/Make/index.html deleted file mode 100644 index 41b99a73..00000000 --- a/dev/containers.data/CCMultiMap/Make/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Make (containers.data.CCMultiMap.Make)

Module CCMultiMap.Make

Parameters

Signature

type key = K.t
type value = V.t
type t
val empty : t

Empty multimap.

val is_empty : t ‑> bool

Empty multimap?

val add : t ‑> key ‑> value ‑> t

Add a key/value binding.

val remove : t ‑> key ‑> value ‑> t

Remove the binding.

val remove_all : t ‑> key ‑> t

Remove the key from the map.

val mem : t ‑> key ‑> bool

Is there a binding for this key?

val find : t ‑> key ‑> value list

List of values for this key.

val find_iter : t ‑> key ‑> (value ‑> unit) ‑> unit

Iterate on bindings for this key.

val count : t ‑> key ‑> int

Number of bindings for this key.

val iter : t ‑> (key ‑> value ‑> unit) ‑> unit

Iterate on all key/value.

val fold : t ‑> 'a ‑> ('a ‑> key ‑> value ‑> 'a) ‑> 'a

Fold on all key/value.

val size : t ‑> int

Number of keys.

val union : t ‑> t ‑> t

Union of multimaps.

val inter : t ‑> t ‑> t

Intersection of multimaps.

val diff : t ‑> t ‑> t

Difference of maps, i.e. bindings of the first that are not -in the second.

val equal : t ‑> t ‑> bool

Same multimap.

val compare : t ‑> t ‑> int

Total order on multimaps.

val submap : t ‑> t ‑> bool

submap m1 m2 is true iff all bindings of m1 are also in m2.

val to_seq : t ‑> (key * value) sequence
val of_seq : ?⁠init:t ‑> (key * value) sequence ‑> t
val keys : t ‑> key sequence
val values : t ‑> value sequence

Some values may occur several times.

\ No newline at end of file diff --git a/dev/containers.data/CCMultiMap/MakeBidir/argument-1-L/index.html b/dev/containers.data/CCMultiMap/MakeBidir/argument-1-L/index.html deleted file mode 100644 index 41379937..00000000 --- a/dev/containers.data/CCMultiMap/MakeBidir/argument-1-L/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-L (containers.data.CCMultiMap.MakeBidir.1-L)

Parameter CCMultiMap.MakeBidir.1-L

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCMultiMap/MakeBidir/argument-2-R/index.html b/dev/containers.data/CCMultiMap/MakeBidir/argument-2-R/index.html deleted file mode 100644 index cc041fdf..00000000 --- a/dev/containers.data/CCMultiMap/MakeBidir/argument-2-R/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -2-R (containers.data.CCMultiMap.MakeBidir.2-R)

Parameter CCMultiMap.MakeBidir.2-R

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCMultiMap/MakeBidir/index.html b/dev/containers.data/CCMultiMap/MakeBidir/index.html deleted file mode 100644 index 13c55798..00000000 --- a/dev/containers.data/CCMultiMap/MakeBidir/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -MakeBidir (containers.data.CCMultiMap.MakeBidir)

Module CCMultiMap.MakeBidir

Parameters

Signature

type t
type left = L.t
type right = R.t
val empty : t
val is_empty : t ‑> bool
val add : t ‑> left ‑> right ‑> t

Add a binding (left,right).

val remove : t ‑> left ‑> right ‑> t

Remove a specific binding.

val cardinal_left : t ‑> int

Number of distinct left keys.

val cardinal_right : t ‑> int

Number of distinct right keys.

val remove_left : t ‑> left ‑> t

Remove all bindings for the left key.

val remove_right : t ‑> right ‑> t

Remove all bindings for the right key.

val mem_left : t ‑> left ‑> bool

Is the left key present in at least one pair?

val mem_right : t ‑> right ‑> bool

Is the right key present in at least one pair?

val find_left : t ‑> left ‑> right sequence

Find all bindings for this given left-key.

val find_right : t ‑> right ‑> left sequence

Find all bindings for this given right-key.

val find1_left : t ‑> left ‑> right option

Like find_left but returns at most one value.

val find1_right : t ‑> right ‑> left option

Like find_right but returns at most one value.

val fold : ('a ‑> left ‑> right ‑> 'a) ‑> 'a ‑> t ‑> 'a

Fold on pairs.

val pairs : t ‑> (left * right) sequence

Iterate on pairs.

val add_pairs : t ‑> (left * right) sequence ‑> t

Add pairs.

val seq_left : t ‑> left sequence
val seq_right : t ‑> right sequence
\ No newline at end of file diff --git a/dev/containers.data/CCMultiMap/index.html b/dev/containers.data/CCMultiMap/index.html deleted file mode 100644 index 62059049..00000000 --- a/dev/containers.data/CCMultiMap/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -CCMultiMap (containers.data.CCMultiMap)

Module CCMultiMap

Multimap

type 'a sequence = ('a ‑> unit) ‑> unit
module type S : sig ... end
module type OrderedType : sig ... end
module Make : functor (K : OrderedType) -> functor (V : OrderedType) -> S with type key = K.t and type value = V.t

Two-Way Multimap

-Represents n-to-n mappings between two types. Each element from the "left" -is mapped to several right values, and conversely.

  • Since: 0.3.3
module type BIDIR : sig ... end
module MakeBidir : functor (L : OrderedType) -> functor (R : OrderedType) -> BIDIR with type left = L.t and type right = R.t
\ No newline at end of file diff --git a/dev/containers.data/CCMultiMap/module-type-BIDIR/index.html b/dev/containers.data/CCMultiMap/module-type-BIDIR/index.html deleted file mode 100644 index 7edb3f7c..00000000 --- a/dev/containers.data/CCMultiMap/module-type-BIDIR/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -BIDIR (containers.data.CCMultiMap.BIDIR)

Module type CCMultiMap.BIDIR

type t
type left
type right
val empty : t
val is_empty : t ‑> bool
val add : t ‑> left ‑> right ‑> t

Add a binding (left,right).

val remove : t ‑> left ‑> right ‑> t

Remove a specific binding.

val cardinal_left : t ‑> int

Number of distinct left keys.

val cardinal_right : t ‑> int

Number of distinct right keys.

val remove_left : t ‑> left ‑> t

Remove all bindings for the left key.

val remove_right : t ‑> right ‑> t

Remove all bindings for the right key.

val mem_left : t ‑> left ‑> bool

Is the left key present in at least one pair?

val mem_right : t ‑> right ‑> bool

Is the right key present in at least one pair?

val find_left : t ‑> left ‑> right sequence

Find all bindings for this given left-key.

val find_right : t ‑> right ‑> left sequence

Find all bindings for this given right-key.

val find1_left : t ‑> left ‑> right option

Like find_left but returns at most one value.

val find1_right : t ‑> right ‑> left option

Like find_right but returns at most one value.

val fold : ('a ‑> left ‑> right ‑> 'a) ‑> 'a ‑> t ‑> 'a

Fold on pairs.

val pairs : t ‑> (left * right) sequence

Iterate on pairs.

val add_pairs : t ‑> (left * right) sequence ‑> t

Add pairs.

val seq_left : t ‑> left sequence
val seq_right : t ‑> right sequence
\ No newline at end of file diff --git a/dev/containers.data/CCMultiMap/module-type-OrderedType/index.html b/dev/containers.data/CCMultiMap/module-type-OrderedType/index.html deleted file mode 100644 index 018a1206..00000000 --- a/dev/containers.data/CCMultiMap/module-type-OrderedType/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -OrderedType (containers.data.CCMultiMap.OrderedType)

Module type CCMultiMap.OrderedType

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCMultiMap/module-type-S/index.html b/dev/containers.data/CCMultiMap/module-type-S/index.html deleted file mode 100644 index 6f93f886..00000000 --- a/dev/containers.data/CCMultiMap/module-type-S/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -S (containers.data.CCMultiMap.S)

Module type CCMultiMap.S

type key
type value
type t
val empty : t

Empty multimap.

val is_empty : t ‑> bool

Empty multimap?

val add : t ‑> key ‑> value ‑> t

Add a key/value binding.

val remove : t ‑> key ‑> value ‑> t

Remove the binding.

val remove_all : t ‑> key ‑> t

Remove the key from the map.

val mem : t ‑> key ‑> bool

Is there a binding for this key?

val find : t ‑> key ‑> value list

List of values for this key.

val find_iter : t ‑> key ‑> (value ‑> unit) ‑> unit

Iterate on bindings for this key.

val count : t ‑> key ‑> int

Number of bindings for this key.

val iter : t ‑> (key ‑> value ‑> unit) ‑> unit

Iterate on all key/value.

val fold : t ‑> 'a ‑> ('a ‑> key ‑> value ‑> 'a) ‑> 'a

Fold on all key/value.

val size : t ‑> int

Number of keys.

val union : t ‑> t ‑> t

Union of multimaps.

val inter : t ‑> t ‑> t

Intersection of multimaps.

val diff : t ‑> t ‑> t

Difference of maps, i.e. bindings of the first that are not -in the second.

val equal : t ‑> t ‑> bool

Same multimap.

val compare : t ‑> t ‑> int

Total order on multimaps.

val submap : t ‑> t ‑> bool

submap m1 m2 is true iff all bindings of m1 are also in m2.

val to_seq : t ‑> (key * value) sequence
val of_seq : ?⁠init:t ‑> (key * value) sequence ‑> t
val keys : t ‑> key sequence
val values : t ‑> value sequence

Some values may occur several times.

\ No newline at end of file diff --git a/dev/containers.data/CCMultiSet.odoc b/dev/containers.data/CCMultiSet.odoc deleted file mode 100644 index 9fb1e8ee18861ee6009ad06c48ab7ac4e532b675..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4513 zcmbtXZE#dq8P1+_-hl)aunL0|y-PO92Ey(pfPe&gle8#uEjlyvjmWfh><hXWYD-o7bFbNoDpNIR1Q9RaF{)0Dq?8&(xuG&UJjla?FyK${W7X zKc}N(b-CzU>r7wIQ0;uvxj^|zSA8cF}Ttv*Z}X6>iBk{C2~$a$b<>J^9!t&a8W8>z$vw zy#Bry4^0ZgId_|-ZP>fb#O}lFtxJdAn9?+BL2}=<9T$&=VJ!|K$RzvcU7PWjcZFsW5tJiJh%rQwycV^30F`v$x z1q0KRInq0Fpz!Ixr?zywR1-Va{#=_Lg!_gES$)zozg9M#oEe0=J{*QY+`thAr}R@g z76*dhV500;zK$gZ*c0{*53oDp>jE|-=o1pvwPw)|SbP|Jv7f6>iDN@jH5?fFDVttr z+TDI{z|yEQ$Y!yR>mhHCCoQj2buBq1f=uH7A53IjwI^ zGA#nKPC~r;l4-l!%z%AYqBbd1hd|{eYEKe{I&I88uA#n6RMBt^X+4?~2K5@Yd0N;P z$4W+XbGdS<#HYg3+yZaz34?^@yI8D65>8D@4}Y9l>1;EKR=(3HZ7$oUgYC5zhu1k; ztCo?d{k56Y=as30>bp~Yw+fT}(&R7a%Ar(z&L2}Bwc4!7W=}JG&2~NigI(8ag_3K3 zMBl$te$T4!Q^NO%^nG)V@@W){BE6$k={gKrM?Dvd<7amqpZgP;R7;Brc~gB~=b<46 zA~wY8>dW1@D{;$&eJNQ~sVam)gO)>2d|GP@e3l!u?OkTcR0*rrG|SWcE>n|}joIX< zSa;FNS$=QLn0dFHO8#bRNn8y$wbhM$Iap5K%3*lT@^L=09$zwzOND63^iWPN9~r*2 zM#Xc??YG1lU1J}-tQv3><1Q?St(ED4*g`Cboq)NKsY=SvLn>ptYHiEGbOqH5S6hx{ z8%515ntb(Y+f${KFU&eqHKj zm2OyvhaR2~IKhpgq#0Tk-8X6K9>TWmCf zfj45*WoWlYOIB<&MrE|oc#DspM?QWbeVkK1t~81J&NFkq%1vf$!-w#-SowNCP5Hwm z|6%-HjQqVO{au#+NL3h)_ z-tv6Q$@%}g<%qb{fZV1e3JD7zJs4}3igh=}QpMR(VW|xJsQm0!)JGBpx0pxjA%(XP zAH=irv4J0c%96H7WCQQRfBdBYbQJXRzzB(i2qOnplN(Q>S1vGDA30ftBtL= zf@xRZ(O~E_o7fg#8yxEc`sm!X{FpcM>wCLR{a6qL13;ey`f%7E9Mk!Oau`(xu;VoQ zY#W;v=g)5Z6ZD6{5I!Gg;vo4$GYQlIYO|@b+5~hf&@DhMkpq^&$Uryq*<=fVda`vf z&;n3XOy3||26U&6Rh~4~h8BQ!s;(74za{5ukgWpRhporKFH7`yfc{#d9|wwV9#H80Krck-9{?S}GSFrb;0d6YB&8o{8fZ#UjstxoqWlEt z+k!GdP=V@g}f25^)XKLWy`6$Wb8u3ULG2qA2Wp zz*+?wVliN9>%;&E9tV3R9%41XRw@F-CIefe7`FlYiU4fjv@T+y!h8Ca+6u{n$z% zCXjrDTm$TT734Z#`w%JCJH+k>k_BQ!$c?}bSC9s<5RvlyjiF#CkcT4V7GO_f=LQ+j z0fI_ur9;dEToC;4n6@3jhOxdL$UTy?3&`8ICCoGHvyVCxiPYX+o~Q&UF7_401G%HUSYfk k(7_p+Vh{pk7LeP8tLYJpOaj2iHIQk_6`2CCmLI+U1=uQqC;$Ke diff --git a/dev/containers.data/CCMultiSet/Make/index.html b/dev/containers.data/CCMultiSet/Make/index.html deleted file mode 100644 index ab31ad40..00000000 --- a/dev/containers.data/CCMultiSet/Make/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Make (containers.data.CCMultiSet.Make)

Module CCMultiSet.Make

Parameters

O : Set.OrderedType

Signature

type elt = O.t
type t
val empty : t
val is_empty : t ‑> bool
val mem : t ‑> elt ‑> bool
val count : t ‑> elt ‑> int
val singleton : elt ‑> t
val add : t ‑> elt ‑> t
val remove : t ‑> elt ‑> t
val add_mult : t ‑> elt ‑> int ‑> t

add_mult set x n adds n occurrences of x to set.

  • Raises Invalid_argument: if n < 0.
  • Since: 0.6
val remove_mult : t ‑> elt ‑> int ‑> t

remove_mult set x n removes at most n occurrences of x from set.

  • Raises Invalid_argument: if n < 0.
  • Since: 0.6
val remove_all : t ‑> elt ‑> t

remove_all set x removes all occurrences of x from set.

  • Since: 0.22
val update : t ‑> elt ‑> (int ‑> int) ‑> t

update set x f calls f n where n is the current multiplicity -of x in set (0 to indicate its absence); the result of f n -is the new multiplicity of x.

  • Raises Invalid_argument: if f n < 0.
  • Since: 0.6
val min : t ‑> elt

Minimal element w.r.t the total ordering on elements.

val max : t ‑> elt

Maximal element w.r.t the total ordering on elements.

val union : t ‑> t ‑> t

union a b contains as many occurrences of an element x -as count a x + count b x.

val meet : t ‑> t ‑> t

meet a b is a multiset such that -count (meet a b) x = max (count a x) (count b x).

val intersection : t ‑> t ‑> t

intersection a b is a multiset such that -count (intersection a b) x = min (count a x) (count b x).

val diff : t ‑> t ‑> t

MultiSet difference. -count (diff a b) x = max (count a x - count b x) 0.

val contains : t ‑> t ‑> bool

contains a x = (count m x > 0).

val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val cardinal : t ‑> int

Number of distinct elements.

val iter : t ‑> (int ‑> elt ‑> unit) ‑> unit
val fold : t ‑> 'b ‑> ('b ‑> int ‑> elt ‑> 'b) ‑> 'b
val of_list : elt list ‑> t
val to_list : t ‑> elt list
val to_seq : t ‑> elt sequence
val of_seq : elt sequence ‑> t
val of_list_mult : (elt * int) list ‑> t
  • Since: 0.19
val to_list_mult : t ‑> (elt * int) list
  • Since: 0.19
val to_seq_mult : t ‑> (elt * int) sequence
  • Since: 0.19
val of_seq_mult : (elt * int) sequence ‑> t
  • Since: 0.19
\ No newline at end of file diff --git a/dev/containers.data/CCMultiSet/index.html b/dev/containers.data/CCMultiSet/index.html deleted file mode 100644 index 88cb381c..00000000 --- a/dev/containers.data/CCMultiSet/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -CCMultiSet (containers.data.CCMultiSet)

Module CCMultiSet

Multiset

type 'a sequence = ('a ‑> unit) ‑> unit
module type S : sig ... end
module Make : functor (O : Set.OrderedType) -> S with type elt = O.t
\ No newline at end of file diff --git a/dev/containers.data/CCMultiSet/module-type-S/index.html b/dev/containers.data/CCMultiSet/module-type-S/index.html deleted file mode 100644 index b15236b5..00000000 --- a/dev/containers.data/CCMultiSet/module-type-S/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -S (containers.data.CCMultiSet.S)

Module type CCMultiSet.S

type elt
type t
val empty : t
val is_empty : t ‑> bool
val mem : t ‑> elt ‑> bool
val count : t ‑> elt ‑> int
val singleton : elt ‑> t
val add : t ‑> elt ‑> t
val remove : t ‑> elt ‑> t
val add_mult : t ‑> elt ‑> int ‑> t

add_mult set x n adds n occurrences of x to set.

  • Raises Invalid_argument: if n < 0.
  • Since: 0.6
val remove_mult : t ‑> elt ‑> int ‑> t

remove_mult set x n removes at most n occurrences of x from set.

  • Raises Invalid_argument: if n < 0.
  • Since: 0.6
val remove_all : t ‑> elt ‑> t

remove_all set x removes all occurrences of x from set.

  • Since: 0.22
val update : t ‑> elt ‑> (int ‑> int) ‑> t

update set x f calls f n where n is the current multiplicity -of x in set (0 to indicate its absence); the result of f n -is the new multiplicity of x.

  • Raises Invalid_argument: if f n < 0.
  • Since: 0.6
val min : t ‑> elt

Minimal element w.r.t the total ordering on elements.

val max : t ‑> elt

Maximal element w.r.t the total ordering on elements.

val union : t ‑> t ‑> t

union a b contains as many occurrences of an element x -as count a x + count b x.

val meet : t ‑> t ‑> t

meet a b is a multiset such that -count (meet a b) x = max (count a x) (count b x).

val intersection : t ‑> t ‑> t

intersection a b is a multiset such that -count (intersection a b) x = min (count a x) (count b x).

val diff : t ‑> t ‑> t

MultiSet difference. -count (diff a b) x = max (count a x - count b x) 0.

val contains : t ‑> t ‑> bool

contains a x = (count m x > 0).

val compare : t ‑> t ‑> int
val equal : t ‑> t ‑> bool
val cardinal : t ‑> int

Number of distinct elements.

val iter : t ‑> (int ‑> elt ‑> unit) ‑> unit
val fold : t ‑> 'b ‑> ('b ‑> int ‑> elt ‑> 'b) ‑> 'b
val of_list : elt list ‑> t
val to_list : t ‑> elt list
val to_seq : t ‑> elt sequence
val of_seq : elt sequence ‑> t
val of_list_mult : (elt * int) list ‑> t
  • Since: 0.19
val to_list_mult : t ‑> (elt * int) list
  • Since: 0.19
val to_seq_mult : t ‑> (elt * int) sequence
  • Since: 0.19
val of_seq_mult : (elt * int) sequence ‑> t
  • Since: 0.19
\ No newline at end of file diff --git a/dev/containers.data/CCPersistentArray.odoc b/dev/containers.data/CCPersistentArray.odoc deleted file mode 100644 index 0a2619f98d2b4fd25c3811590736846de274eedb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4501 zcmdT{TWlOx8D6hvMZGN*L6urXr5xKEd!6jgu9ILAik;oK+QUU-v$p8VX|`CtC{d#}Cu%5|k_M>Utznz`Kj z_vCUnzj{+HSIWiznLaHa#qs54BaUV_Z8K@yZ^U>!_Su%_^jXjo%;m1|SbM_GJX6Q)z!XL|ETWzQ5@;gC!ej5Imd1^ z;;)wK`fRG_ z9Ok~+@uT|S`LnlPKK`xK_k8#dC+>gw(VL-12}Jdsw;zA3)H-+U+VqiQ$A9tj7vgv~ z61IYaD*`7U*Z%UmNB{JJ%7^xsA9?$M-<*%*T_-y|4hKGCE%|r6aHa6zk?;R1cub=GJW;sjc49&Hlp~Emo8|B#sic$nm>Ue1p`+w$H-QP6UO{T<0Z(9^M?Ev zpS$#|c3-K_PYWDfFVlkAYz;`znI}*?+h_beT1c}c?B$@x>rWeu3y8=xj~Db9o(ryaIdESt83qAzS; zMnf2wpJ%Qox{waUjLsGvygL)ZiZ!S((_m{1cKTt!+m^tC0NbLE+K4XW$nY|Q6}Hte zp?s<^4&?Tou4xQR2(H1n=Y-2W=GdwEqVgW*JX81x9m>=Rsn>yr9!uZyK)KKRD2Uk? zdLw?OzGSa(%j}-w-f~FEiK9t)9k1`Q*~eKuj!Mk&usvY21$KPk>wUfkS(NUS$~a1M zpI%&|gbD^#p>$0~&6#02Jb>?2*8%349roM8tB|P5B$S!`u+Mz+0i@qAIyRCIW7`>G zHMSQ>(Ho8LG@gp0jY(+464=4+g7$fBQQ}BK=;0F8QbLFpfRF({=l(qiB}FL$N@g4_ zr0{^NUBUy!>j@tnKyZrJCk+NM`1gODRIQ1O%JgcjB(vGHzB;)qWLBr~i#|lWV{DjI zN=TA3)q@~jv4+f0`s&O`nOs2@kNJ($b#Ou*c0!rmwiDW2e}ei6=j=F|qpreB-|Pa* zXl;+%%Yt4?$f7*)`ranNR8NS3vnrdF29p3E#D*v9uTZdroWjW1q_1L}!7s(gR^sRY z<^^aY8{xkYT!~-;m!RNAu=p>;`NK?{uOnX7FxqSKv5NV`lu8oO_1NxDOP-a%Cb^Sz zi4nXxT4fE>R@8nkb)gNlw;D=guhene0X5(hEf`9Da0nFe0ve~s~ zQ=&3O$X($IpvVq}w*H>lDvabZA$)nV&)p~{a*!cL<86uK!pLo#2XfG|3#5sDEG>0PHq~}1wG+Y>_j|m<|&J_H{rl5#HlvNdnu`)d{ zX=|`Dbu!M)%pf;1$w}HMlYq)*9-EtaJd(-dPfI2)Gm2`lAVYDqmvN+&$~X)HeLx)C zxKU2u4X#QN)7J62q>`8;Wfs-qm?2K)Q6&K?V%%)<6zUtL5HkSb0HB2tYDP{=?G}ZE z{KzhffS|Bmrq%yc2-4?^sutw*TpGtWhH>ETNz9f1$c*7wU5sTTh_vUDKA_cc z{-|B#g^&4RySlxJ{GGAX$fQOIjr>$b`}1YeeoB%`935(5!?0nvlDcdUNGi1knwZJ@ zpQ5gipNG135>fshsau-7S3XxkyipDub)6#k?M^q;Lw9HRGPyry850u2yHFwDP1SGg zlJUx|GV!;vV`NOE8=~ZeO%ou5{x()1G_<1KnHnkN&u$tRy=@w9;}c2V3}%uwMKCr# z)K8>EB6L+sI@t${(RADz$kVBfjS|Uc%*;*0^`V($%`BLiADT%g%e%>h>P26>bd4rg zhAyb-10~x=`Fh6u{d-{26Dva(s+m2xQ77^xOpm~y^tX#wp}nukLEugZ(BMS#fV!;LuF1FR?Co%nug(8pF`^b2M6-O&*s zxp#&iRZ+qNguIa_6a_vtJoFeYbT(RSM^;{newRcyrW}{%pmZRinbB`gp~SF-V>60S zM(0vz;m3>G-O69$q|vKWNP!Zbm%`euscd2NXh!hYBuLK0Te$!l|EN*NNX{;d_A+O# zktf@nDU1%%1KM3melvL!OP@-^*LF<1p8OU^EDvu -CCPersistentArray (containers.data.CCPersistentArray)

Module CCPersistentArray

Persistent Arrays

From the paper by Jean-Christophe Filliâtre, -"A persistent Union-Find data structure", see -the ps version

  • Since: 0.10
type 'a t

The type of persistent arrays

val make : int ‑> 'a ‑> 'a t

make n x returns a persistent array of length n, with x. All the -elements of this new array are initially physically equal to x -(in the sense of the == predicate). Consequently, if x is mutable, it is -shared among all elements of the array, and modifying x through one of the -array entries will modify all other entries at the same time.

  • Raises Invalid_argument: if n < 0 or n > Sys.max_array_length. -If the value of x is a floating-point number, then the maximum size is -only Sys.max_array_length / 2.
val init : int ‑> (int ‑> 'a) ‑> 'a t

init n f returns a persistent array of length n, with element -i initialized to the result of f i.

  • Raises Invalid_argument: if n < 0 or n > Sys.max_array_length. -If the value of x is a floating-point number, then the maximum size is -only Sys.max_array_length / 2.
val get : 'a t ‑> int ‑> 'a

get a i returns the element with index i from the array a.

  • Raises Invalid_argument: "index out of bounds" if n is outside the -range 0 to Array.length a - 1.
val set : 'a t ‑> int ‑> 'a ‑> 'a t

set a i v sets the element index i from the array a to v.

  • Raises Invalid_argument: "index out of bounds" if n is outside the -range 0 to Array.length a - 1.
val length : 'a t ‑> int

Return the length of the persistent array.

val copy : 'a t ‑> 'a t

copy a returns a fresh copy of a. Both copies are independent.

val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t
val mapi : (int ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t

Apply the given function to all elements of the array, and return -a persistent array initialized by the results of f. In the case of mapi, -the function is also given the index of the element. -It is equivalent to fun f t -> init (fun i -> f (get t i)).

val iter : ('a ‑> unit) ‑> 'a t ‑> unit

iter f t applies function f to all elements of the persistent array, -in order from element 0 to element length t - 1.

val iteri : (int ‑> 'a ‑> unit) ‑> 'a t ‑> unit

iter f t applies function f to all elements of the persistent array, -in order from element 0 to element length t - 1.

val fold_left : ('a ‑> 'b ‑> 'a) ‑> 'a ‑> 'b t ‑> 'a
val fold_right : ('a ‑> 'b ‑> 'b) ‑> 'a t ‑> 'b ‑> 'b

Fold on the elements of the array.

val append : 'a t ‑> 'a t ‑> 'a t

Append the two arrays.

  • Since: 0.13
val flatten : 'a t t ‑> 'a t

Concatenates all the sub-arrays.

  • Since: 0.13
val flat_map : ('a ‑> 'b t) ‑> 'a t ‑> 'b t

Flat map (map + concatenation).

  • Since: 0.13
val to_array : 'a t ‑> 'a array

to_array t returns a mutable copy of t.

val of_array : 'a array ‑> 'a t

of_array a returns an immutable copy of a.

val to_list : 'a t ‑> 'a list

to_list t returns the list of elements in t.

val of_list : 'a list ‑> 'a t

of_list l returns a fresh persistent array containing the elements of l.

val of_rev_list : 'a list ‑> 'a t

of_rev_list l is the same as of_list (List.rev l) but more efficient.

  • Since: 0.13

Conversions

type 'a sequence = ('a ‑> unit) ‑> unit
type 'a gen = unit ‑> 'a option
val to_seq : 'a t ‑> 'a sequence
val of_seq : 'a sequence ‑> 'a t
val of_gen : 'a gen ‑> 'a t
  • Since: 0.13
val to_gen : 'a t ‑> 'a gen
  • Since: 0.13

IO

type 'a printer = Format.formatter ‑> 'a ‑> unit
val pp : 'a printer ‑> 'a t printer
  • Since: 0.13
\ No newline at end of file diff --git a/dev/containers.data/CCPersistentHashtbl.odoc b/dev/containers.data/CCPersistentHashtbl.odoc deleted file mode 100644 index d2a0029f9f1f5b92dad69af7cb9c8e87aeec3cd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6204 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 -1-H (containers.data.CCPersistentHashtbl.Make.1-H)

Parameter CCPersistentHashtbl.Make.1-H

type t
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCPersistentHashtbl/Make/index.html b/dev/containers.data/CCPersistentHashtbl/Make/index.html deleted file mode 100644 index 04339b3b..00000000 --- a/dev/containers.data/CCPersistentHashtbl/Make/index.html +++ /dev/null @@ -1,10 +0,0 @@ - -Make (containers.data.CCPersistentHashtbl.Make)

Module CCPersistentHashtbl.Make

Parameters

Signature

type key = H.t
type 'a t
val empty : unit ‑> 'a t

Empty table. The table will be allocated at the first binding.

val create : int ‑> 'a t

Create a new hashtable, with the given initial capacity.

val is_empty : 'a t ‑> bool

Is the table empty?

val find : 'a t ‑> key ‑> 'a

Find the value for this key, or fails.

  • Raises Not_found: if the key is not present in the table.
val get_exn : key ‑> 'a t ‑> 'a

Synonym to find with flipped arguments.

val get : key ‑> 'a t ‑> 'a option

Safe version of !.

val mem : 'a t ‑> key ‑> bool

Is the key bound?

val length : _ t ‑> int

Number of bindings.

val add : 'a t ‑> key ‑> 'a ‑> 'a t

Add the binding to the table, returning a new table. The old binding -for this key, if it exists, is shadowed and will be restored upon -remove tbl k.

  • Since: 0.14
val replace : 'a t ‑> key ‑> 'a ‑> 'a t

Add the binding to the table, returning a new table. This erases -the current binding for key, if any.

val update : 'a t ‑> key ‑> ('a option ‑> 'a option) ‑> 'a t

update tbl key f calls f None if key doesn't belong in tbl, -f (Some v) if key -> v otherwise; If f returns None then -key is removed, else it returns Some v' and key -> v' is added.

val remove : 'a t ‑> key ‑> 'a t

Remove the key.

val copy : 'a t ‑> 'a t

Fresh copy of the table; the underlying structure is not shared -anymore, so using both tables alternatively will be efficient.

val merge : f:(key ‑> [ `Left of 'a | `Right of 'b | `Both of 'a * 'b ] ‑> 'c option) ‑> 'a t ‑> 'b t ‑> 'c t

Merge two tables together into a new table. The function's argument -correspond to values associated with the key (if present); if the -function returns None the key will not appear in the result.

val iter : 'a t ‑> (key ‑> 'a ‑> unit) ‑> unit

Iterate over bindings.

val fold : ('b ‑> key ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b

Fold over bindings.

val map : (key ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t

Map all values.

val filter : (key ‑> 'a ‑> bool) ‑> 'a t ‑> 'a t
val filter_map : (key ‑> 'a ‑> 'b option) ‑> 'a t ‑> 'b t
val for_all : (key ‑> 'a ‑> bool) ‑> 'a t ‑> bool
val exists : (key ‑> 'a ‑> bool) ‑> 'a t ‑> bool

Conversions

val of_seq : (key * 'a) sequence ‑> 'a t

Add (replace) bindings from the sequence to the table.

val of_list : (key * 'a) list ‑> 'a t
val add_seq : 'a t ‑> (key * 'a) sequence ‑> 'a t
val add_list : 'a t ‑> (key * 'a) list ‑> 'a t
val to_seq : 'a t ‑> (key * 'a) sequence

Sequence of the bindings of the table.

val to_list : 'a t ‑> (key * 'a) list

Misc

val equal : 'a equal ‑> 'a t equal
val pp : ?⁠sep:string ‑> ?⁠arrow:string ‑> key printer ‑> 'a printer ‑> 'a t printer
val stats : _ t ‑> Hashtbl.statistics

Statistics on the internal table.

  • Since: 0.14
\ No newline at end of file diff --git a/dev/containers.data/CCPersistentHashtbl/index.html b/dev/containers.data/CCPersistentHashtbl/index.html deleted file mode 100644 index 7e53ad85..00000000 --- a/dev/containers.data/CCPersistentHashtbl/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -CCPersistentHashtbl (containers.data.CCPersistentHashtbl)

Module CCPersistentHashtbl

Persistent hash-table on top of OCaml's hashtables

Almost as efficient as the regular Hashtbl type, but with a persistent -interface (rewinding changes to get back in the past history). This is -mostly useful for backtracking-like uses, or forward uses (never using -old values).

This module is not thread-safe.

type 'a sequence = ('a ‑> unit) ‑> unit
type 'a printer = Format.formatter ‑> 'a ‑> unit
type 'a equal = 'a ‑> 'a ‑> bool
module type HashedType : sig ... end

Signature of such a hashtable

module type S : sig ... end

Implementation

module Make : functor (H : HashedType) -> S with type key = H.t
\ No newline at end of file diff --git a/dev/containers.data/CCPersistentHashtbl/module-type-HashedType/index.html b/dev/containers.data/CCPersistentHashtbl/module-type-HashedType/index.html deleted file mode 100644 index 3af4a03a..00000000 --- a/dev/containers.data/CCPersistentHashtbl/module-type-HashedType/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -HashedType (containers.data.CCPersistentHashtbl.HashedType)

Module type CCPersistentHashtbl.HashedType

type t
val equal : t ‑> t ‑> bool
val hash : t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCPersistentHashtbl/module-type-S/index.html b/dev/containers.data/CCPersistentHashtbl/module-type-S/index.html deleted file mode 100644 index 5f05a082..00000000 --- a/dev/containers.data/CCPersistentHashtbl/module-type-S/index.html +++ /dev/null @@ -1,10 +0,0 @@ - -S (containers.data.CCPersistentHashtbl.S)

Module type CCPersistentHashtbl.S

type key
type 'a t
val empty : unit ‑> 'a t

Empty table. The table will be allocated at the first binding.

val create : int ‑> 'a t

Create a new hashtable, with the given initial capacity.

val is_empty : 'a t ‑> bool

Is the table empty?

val find : 'a t ‑> key ‑> 'a

Find the value for this key, or fails.

  • Raises Not_found: if the key is not present in the table.
val get_exn : key ‑> 'a t ‑> 'a

Synonym to find with flipped arguments.

val get : key ‑> 'a t ‑> 'a option

Safe version of !.

val mem : 'a t ‑> key ‑> bool

Is the key bound?

val length : _ t ‑> int

Number of bindings.

val add : 'a t ‑> key ‑> 'a ‑> 'a t

Add the binding to the table, returning a new table. The old binding -for this key, if it exists, is shadowed and will be restored upon -remove tbl k.

  • Since: 0.14
val replace : 'a t ‑> key ‑> 'a ‑> 'a t

Add the binding to the table, returning a new table. This erases -the current binding for key, if any.

val update : 'a t ‑> key ‑> ('a option ‑> 'a option) ‑> 'a t

update tbl key f calls f None if key doesn't belong in tbl, -f (Some v) if key -> v otherwise; If f returns None then -key is removed, else it returns Some v' and key -> v' is added.

val remove : 'a t ‑> key ‑> 'a t

Remove the key.

val copy : 'a t ‑> 'a t

Fresh copy of the table; the underlying structure is not shared -anymore, so using both tables alternatively will be efficient.

val merge : f:(key ‑> [ `Left of 'a | `Right of 'b | `Both of 'a * 'b ] ‑> 'c option) ‑> 'a t ‑> 'b t ‑> 'c t

Merge two tables together into a new table. The function's argument -correspond to values associated with the key (if present); if the -function returns None the key will not appear in the result.

val iter : 'a t ‑> (key ‑> 'a ‑> unit) ‑> unit

Iterate over bindings.

val fold : ('b ‑> key ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b

Fold over bindings.

val map : (key ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t

Map all values.

val filter : (key ‑> 'a ‑> bool) ‑> 'a t ‑> 'a t
val filter_map : (key ‑> 'a ‑> 'b option) ‑> 'a t ‑> 'b t
val for_all : (key ‑> 'a ‑> bool) ‑> 'a t ‑> bool
val exists : (key ‑> 'a ‑> bool) ‑> 'a t ‑> bool

Conversions

val of_seq : (key * 'a) sequence ‑> 'a t

Add (replace) bindings from the sequence to the table.

val of_list : (key * 'a) list ‑> 'a t
val add_seq : 'a t ‑> (key * 'a) sequence ‑> 'a t
val add_list : 'a t ‑> (key * 'a) list ‑> 'a t
val to_seq : 'a t ‑> (key * 'a) sequence

Sequence of the bindings of the table.

val to_list : 'a t ‑> (key * 'a) list

Misc

val equal : 'a equal ‑> 'a t equal
val pp : ?⁠sep:string ‑> ?⁠arrow:string ‑> key printer ‑> 'a printer ‑> 'a t printer
val stats : _ t ‑> Hashtbl.statistics

Statistics on the internal table.

  • Since: 0.14
\ No newline at end of file diff --git a/dev/containers.data/CCRAL.odoc b/dev/containers.data/CCRAL.odoc deleted file mode 100644 index 7cd86e76c6b5728590415e68279d67e0ee03691e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5936 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 diff --git a/dev/containers.data/CCRAL/Infix/index.html b/dev/containers.data/CCRAL/Infix/index.html deleted file mode 100644 index 2889728b..00000000 --- a/dev/containers.data/CCRAL/Infix/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Infix (containers.data.CCRAL.Infix)

Module CCRAL.Infix

val (@+) : 'a ‑> 'a t ‑> 'a t

Cons (alias to cons).

val (>>=) : 'a t ‑> ('a ‑> 'b t) ‑> 'b t

Alias to flat_map.

val (>|=) : 'a t ‑> ('a ‑> 'b) ‑> 'b t

Alias to map.

val (<*>) : ('a ‑> 'b) t ‑> 'a t ‑> 'b t

Alias to app.

val (--) : int ‑> int ‑> int t

Alias to range.

val (--^) : int ‑> int ‑> int t

a --^ b is the integer range from a to b, where b is excluded.

  • Since: 0.17
\ No newline at end of file diff --git a/dev/containers.data/CCRAL/index.html b/dev/containers.data/CCRAL/index.html deleted file mode 100644 index 6cd09614..00000000 --- a/dev/containers.data/CCRAL/index.html +++ /dev/null @@ -1,6 +0,0 @@ - -CCRAL (containers.data.CCRAL)

Module CCRAL

Random-Access Lists

This is an OCaml implementation of Okasaki's paper -"Purely Functional Random Access Lists". It defines a list-like data -structure with O(1) cons/tail operations, and O(log(n)) lookup/modification -operations.

This module used to be part of containers.misc

status: stable

  • Since: 0.13
type +'a t

List containing elements of type 'a

val empty : 'a t

Empty list.

val is_empty : _ t ‑> bool

Check whether the list is empty.

val cons : 'a ‑> 'a t ‑> 'a t

Add an element at the front of the list.

val return : 'a ‑> 'a t

Singleton.

val map : f:('a ‑> 'b) ‑> 'a t ‑> 'b t

Map on elements.

val mapi : f:(int ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t

Map with index.

val hd : 'a t ‑> 'a

First element of the list, or

  • Raises Invalid_argument: if the list is empty.
val tl : 'a t ‑> 'a t

Remove the first element from the list, or

  • Raises Invalid_argument: if the list is empty.
val front : 'a t ‑> ('a * 'a t) option

Remove and return the first element of the list.

val front_exn : 'a t ‑> 'a * 'a t

Unsafe version of front.

  • Raises Invalid_argument: if the list is empty.
val length : 'a t ‑> int

Number of elements. Complexity O(ln n) where n=number of elements.

val get : 'a t ‑> int ‑> 'a option

get l i accesses the i-th element of the list. O(log(n)).

val get_exn : 'a t ‑> int ‑> 'a

Unsafe version of get.

  • Raises Invalid_argument: if the list has less than i+1 elements.
val set : 'a t ‑> int ‑> 'a ‑> 'a t

set l i v sets the i-th element of the list to v. O(log(n)).

  • Raises Invalid_argument: if the list has less than i+1 elements.
val remove : 'a t ‑> int ‑> 'a t

remove l i removes the i-th element of v.

  • Raises Invalid_argument: if the list has less than i+1 elements.
val append : 'a t ‑> 'a t ‑> 'a t
val filter : f:('a ‑> bool) ‑> 'a t ‑> 'a t
val filter_map : f:('a ‑> 'b option) ‑> 'a t ‑> 'b t
val flat_map : ('a ‑> 'b t) ‑> 'a t ‑> 'b t
val flatten : 'a t t ‑> 'a t
val app : ('a ‑> 'b) t ‑> 'a t ‑> 'b t
val take : int ‑> 'a t ‑> 'a t
val take_while : f:('a ‑> bool) ‑> 'a t ‑> 'a t
val drop : int ‑> 'a t ‑> 'a t
val drop_while : f:('a ‑> bool) ‑> 'a t ‑> 'a t
val take_drop : int ‑> 'a t ‑> 'a t * 'a t

take_drop n l splits l into a, b such that length a = n -if length l >= n, and such that append a b = l.

val iter : f:('a ‑> unit) ‑> 'a t ‑> unit

Iterate on the list's elements.

val iteri : f:(int ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val fold : f:('b ‑> 'a ‑> 'b) ‑> x:'b ‑> 'a t ‑> 'b

Fold on the list's elements.

val fold_rev : f:('b ‑> 'a ‑> 'b) ‑> x:'b ‑> 'a t ‑> 'b

Fold on the list's elements, in reverse order (starting from the tail).

val rev_map : f:('a ‑> 'b) ‑> 'a t ‑> 'b t

rev_map f l is the same as map f (rev l).

val rev : 'a t ‑> 'a t

Reverse the list.

val equal : eq:('a ‑> 'a ‑> bool) ‑> 'a t ‑> 'a t ‑> bool
val compare : cmp:('a ‑> 'a ‑> int) ‑> 'a t ‑> 'a t ‑> int

Lexicographic comparison.

Utils

val make : int ‑> 'a ‑> 'a t
val repeat : int ‑> 'a t ‑> 'a t

repeat n l is append l (append l ... l)n times.

val range : int ‑> int ‑> int t

range i j is i; i+1; ... ; j or j; j-1; ...; i.

Conversions

type 'a sequence = ('a ‑> unit) ‑> unit
type 'a gen = unit ‑> 'a option
val add_list : 'a t ‑> 'a list ‑> 'a t
val of_list : 'a list ‑> 'a t

Convert a list to a RAL. Caution: non tail-rec.

val to_list : 'a t ‑> 'a list
val of_list_map : f:('a ‑> 'b) ‑> 'a list ‑> 'b t

Combination of of_list and map.

val of_array : 'a array ‑> 'a t
val add_array : 'a t ‑> 'a array ‑> 'a t
val to_array : 'a t ‑> 'a array

More efficient than on usual lists.

val add_seq : 'a t ‑> 'a sequence ‑> 'a t
val of_seq : 'a sequence ‑> 'a t
val to_seq : 'a t ‑> 'a sequence
val add_gen : 'a t ‑> 'a gen ‑> 'a t
val of_gen : 'a gen ‑> 'a t
val to_gen : 'a t ‑> 'a gen

Infix

module Infix : sig ... end
include module type of Infix
val (@+) : 'a ‑> 'a t ‑> 'a t

Cons (alias to cons).

val (>>=) : 'a t ‑> ('a ‑> 'b t) ‑> 'b t

Alias to flat_map.

val (>|=) : 'a t ‑> ('a ‑> 'b) ‑> 'b t

Alias to map.

val (<*>) : ('a ‑> 'b) t ‑> 'a t ‑> 'b t

Alias to app.

val (--) : int ‑> int ‑> int t

Alias to range.

val (--^) : int ‑> int ‑> int t

a --^ b is the integer range from a to b, where b is excluded.

  • Since: 0.17

IO

type 'a printer = Format.formatter ‑> 'a ‑> unit
val pp : ?⁠sep:string ‑> 'a printer ‑> 'a t printer
\ No newline at end of file diff --git a/dev/containers.data/CCRingBuffer.odoc b/dev/containers.data/CCRingBuffer.odoc deleted file mode 100644 index 8984a317bab7e94084c756991f841a194f902b46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13025 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 lgwN-r -Byte (containers.data.CCRingBuffer.Array.Byte)

Module CCRingBuffer.Array.Byte

Efficient array version for the char type

type elt = char

The element type

type t = Bytes.t

The type of an array instance

val create : int ‑> t

Make an array of the given size, filled with dummy elements.

val length : t ‑> int

length t gets the total number of elements currently in t.

val get : t ‑> int ‑> elt

get t i gets the element at position i.

val set : t ‑> int ‑> elt ‑> unit

set t i e sets the element at position i to e.

val sub : t ‑> int ‑> int ‑> t

sub t i len gets the sub-array of t from -position i to i + len.

val copy : t ‑> t

copy t makes a fresh copy of the array t.

val blit : t ‑> int ‑> t ‑> int ‑> int ‑> unit

blit t s arr i len copies len elements from arr starting at i -to position s from t.

val iter : (elt ‑> unit) ‑> t ‑> unit

iter f t iterates over the array t invoking f with -the current element, in array order.

\ No newline at end of file diff --git a/dev/containers.data/CCRingBuffer/Array/Make/argument-1-Elt/index.html b/dev/containers.data/CCRingBuffer/Array/Make/argument-1-Elt/index.html deleted file mode 100644 index 690a5bc5..00000000 --- a/dev/containers.data/CCRingBuffer/Array/Make/argument-1-Elt/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-Elt (containers.data.CCRingBuffer.Array.Make.1-Elt)

Parameter CCRingBuffer.Array.Make.1-Elt

type t
val dummy : t
\ No newline at end of file diff --git a/dev/containers.data/CCRingBuffer/Array/Make/index.html b/dev/containers.data/CCRingBuffer/Array/Make/index.html deleted file mode 100644 index 996bdf1e..00000000 --- a/dev/containers.data/CCRingBuffer/Array/Make/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Make (containers.data.CCRingBuffer.Array.Make)

Module CCRingBuffer.Array.Make

Makes an array given an arbitrary element type

Parameters

Elt : sig ... end

Signature

type elt = Elt.t

The element type

type t = Elt.t array

The type of an array instance

val create : int ‑> t

Make an array of the given size, filled with dummy elements.

val length : t ‑> int

length t gets the total number of elements currently in t.

val get : t ‑> int ‑> elt

get t i gets the element at position i.

val set : t ‑> int ‑> elt ‑> unit

set t i e sets the element at position i to e.

val sub : t ‑> int ‑> int ‑> t

sub t i len gets the sub-array of t from -position i to i + len.

val copy : t ‑> t

copy t makes a fresh copy of the array t.

val blit : t ‑> int ‑> t ‑> int ‑> int ‑> unit

blit t s arr i len copies len elements from arr starting at i -to position s from t.

val iter : (elt ‑> unit) ‑> t ‑> unit

iter f t iterates over the array t invoking f with -the current element, in array order.

\ No newline at end of file diff --git a/dev/containers.data/CCRingBuffer/Array/index.html b/dev/containers.data/CCRingBuffer/Array/index.html deleted file mode 100644 index 37060726..00000000 --- a/dev/containers.data/CCRingBuffer/Array/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Array (containers.data.CCRingBuffer.Array)

Module CCRingBuffer.Array

The abstract type for arrays

module type S : sig ... end
module Byte : S with type elt = char and type t = Bytes.t

Efficient array version for the char type

module Make : functor (Elt : sig ... end) -> S with type elt = Elt.t and type t = Elt.t array

Makes an array given an arbitrary element type

\ No newline at end of file diff --git a/dev/containers.data/CCRingBuffer/Array/module-type-S/index.html b/dev/containers.data/CCRingBuffer/Array/module-type-S/index.html deleted file mode 100644 index 77509e4e..00000000 --- a/dev/containers.data/CCRingBuffer/Array/module-type-S/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -S (containers.data.CCRingBuffer.Array.S)

Module type CCRingBuffer.Array.S

type elt

The element type

type t

The type of an array instance

val create : int ‑> t

Make an array of the given size, filled with dummy elements.

val length : t ‑> int

length t gets the total number of elements currently in t.

val get : t ‑> int ‑> elt

get t i gets the element at position i.

val set : t ‑> int ‑> elt ‑> unit

set t i e sets the element at position i to e.

val sub : t ‑> int ‑> int ‑> t

sub t i len gets the sub-array of t from -position i to i + len.

val copy : t ‑> t

copy t makes a fresh copy of the array t.

val blit : t ‑> int ‑> t ‑> int ‑> int ‑> unit

blit t s arr i len copies len elements from arr starting at i -to position s from t.

val iter : (elt ‑> unit) ‑> t ‑> unit

iter f t iterates over the array t invoking f with -the current element, in array order.

\ No newline at end of file diff --git a/dev/containers.data/CCRingBuffer/Byte/index.html b/dev/containers.data/CCRingBuffer/Byte/index.html deleted file mode 100644 index 18d37024..00000000 --- a/dev/containers.data/CCRingBuffer/Byte/index.html +++ /dev/null @@ -1,15 +0,0 @@ - -Byte (containers.data.CCRingBuffer.Byte)

Module CCRingBuffer.Byte

An efficient byte based ring buffer

module Array = Array.Byte

The module type of Array for this ring buffer

type t

Defines the bounded ring buffer type

exception Empty

Raised in querying functions when the buffer is empty

val create : int ‑> t

create size creates a new bounded buffer with given size. -The underlying array is allocated immediately and no further (large) -allocation will happen from now on.

  • Raises Invalid_argument: if the argument is < 1.
val copy : t ‑> t

Make a fresh copy of the buffer.

val capacity : t ‑> int

Length of the inner buffer.

val length : t ‑> int

Number of elements currently stored in the buffer.

val is_full : t ‑> bool

true if pushing an element would erase another element.

  • Since: 1.3
val blit_from : t ‑> Array.t ‑> int ‑> int ‑> unit

blit_from buf from_buf o len copies the slice o, ... o + len - 1 from -an input buffer from_buf to the end of the buffer. -If the slice is too large for the buffer, only the last part of the array -will be copied.

  • Raises Invalid_argument: if o,len is not a valid slice of s.
val blit_into : t ‑> Array.t ‑> int ‑> int ‑> int

blit_into buf to_buf o len copies at most len elements from buf -into to_buf starting at offset o in s.

  • Returns the number of elements actually copied (min len (length buf)).
  • Raises Invalid_argument: if o,len is not a valid slice of s.
val append : t ‑> into:t ‑> unit

append b ~into copies all data from b and adds it at the -end of into. Erases data of into if there is not enough room.

val to_list : t ‑> Array.elt list

Extract the current content into a list.

val clear : t ‑> unit

Clear the content of the buffer. Doesn't actually destroy the content.

val is_empty : t ‑> bool

Is the buffer empty (i.e. contains no elements)?

val junk_front : t ‑> unit

Drop the front element from t.

  • Raises Empty: if the buffer is already empty.
val junk_back : t ‑> unit

Drop the back element from t.

  • Raises Empty: if the buffer is already empty.
val skip : t ‑> int ‑> unit

skip b len removes len elements from the front of b.

  • Raises Invalid_argument: if len > length b.
val iter : t ‑> f:(Array.elt ‑> unit) ‑> unit

iter b ~f calls f i t for each element t in buf.

val iteri : t ‑> f:(int ‑> Array.elt ‑> unit) ‑> unit

iteri b ~f calls f i t for each element t in buf, with i -being its relative index within buf.

val get_front : t ‑> int ‑> Array.elt

get_front buf i returns the i-th element of buf from the front, i.e. -the one returned by take_front buf after i-1 calls to junk_front buf.

  • Raises Invalid_argument: if the index is invalid (> length buf).
val get_back : t ‑> int ‑> Array.elt

get_back buf i returns the i-th element of buf from the back, i.e. -the one returned by take_back buf after i-1 calls to junk_back buf.

  • Raises Invalid_argument: if the index is invalid (> length buf).
val push_back : t ‑> Array.elt ‑> unit

Push value at the back of t. -If t.bounded=false, the buffer will grow as needed, -otherwise the oldest elements are replaced first.

val peek_front : t ‑> Array.elt option

First value from front of t, without modification.

val peek_front_exn : t ‑> Array.elt

First value from front of t, without modification.

  • Raises Empty: if buffer is empty.
  • Since: 1.3
val peek_back : t ‑> Array.elt option

Get the last value from back of t, without modification.

val peek_back_exn : t ‑> Array.elt

Get the last value from back of t, without modification.

  • Raises Empty: if buffer is empty.
  • Since: 1.3
val take_back : t ‑> Array.elt option

Take and remove the last value from back of t, if any.

val take_back_exn : t ‑> Array.elt

Take and remove the last value from back of t.

  • Raises Empty: if buffer is already empty.
val take_front : t ‑> Array.elt option

Take and remove the first value from front of t, if any.

val take_front_exn : t ‑> Array.elt

Take and remove the first value from front of t.

  • Raises Empty: if buffer is already empty.
val of_array : Array.t ‑> t

Create a buffer from an initial array, but doesn't take ownership -of it (still allocates a new internal array).

  • Since: 0.11
val to_array : t ‑> Array.t

Create an array from the elements, in order.

  • Since: 0.11
\ No newline at end of file diff --git a/dev/containers.data/CCRingBuffer/Make/Array/index.html b/dev/containers.data/CCRingBuffer/Make/Array/index.html deleted file mode 100644 index eed8626a..00000000 --- a/dev/containers.data/CCRingBuffer/Make/Array/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Array (containers.data.CCRingBuffer.Make.Array)

Module CCRingBuffer.Make.Array

The module type of Array for this ring buffer

type elt = X.t

The element type

type t = X.t array

The type of an array instance

val create : int ‑> t

Make an array of the given size, filled with dummy elements.

val length : t ‑> int

length t gets the total number of elements currently in t.

val get : t ‑> int ‑> elt

get t i gets the element at position i.

val set : t ‑> int ‑> elt ‑> unit

set t i e sets the element at position i to e.

val sub : t ‑> int ‑> int ‑> t

sub t i len gets the sub-array of t from -position i to i + len.

val copy : t ‑> t

copy t makes a fresh copy of the array t.

val blit : t ‑> int ‑> t ‑> int ‑> int ‑> unit

blit t s arr i len copies len elements from arr starting at i -to position s from t.

val iter : (elt ‑> unit) ‑> t ‑> unit

iter f t iterates over the array t invoking f with -the current element, in array order.

\ No newline at end of file diff --git a/dev/containers.data/CCRingBuffer/Make/argument-1-X/index.html b/dev/containers.data/CCRingBuffer/Make/argument-1-X/index.html deleted file mode 100644 index 77d276ab..00000000 --- a/dev/containers.data/CCRingBuffer/Make/argument-1-X/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-X (containers.data.CCRingBuffer.Make.1-X)

Parameter CCRingBuffer.Make.1-X

type t
val dummy : t
\ No newline at end of file diff --git a/dev/containers.data/CCRingBuffer/Make/index.html b/dev/containers.data/CCRingBuffer/Make/index.html deleted file mode 100644 index a2bc7ba1..00000000 --- a/dev/containers.data/CCRingBuffer/Make/index.html +++ /dev/null @@ -1,15 +0,0 @@ - -Make (containers.data.CCRingBuffer.Make)

Module CCRingBuffer.Make

Buffer using regular arrays

Parameters

X : sig ... end

Signature

module Array : Array.S with type elt = X.t and type t = X.t array

The module type of Array for this ring buffer

type t

Defines the bounded ring buffer type

exception Empty

Raised in querying functions when the buffer is empty

val create : int ‑> t

create size creates a new bounded buffer with given size. -The underlying array is allocated immediately and no further (large) -allocation will happen from now on.

  • Raises Invalid_argument: if the argument is < 1.
val copy : t ‑> t

Make a fresh copy of the buffer.

val capacity : t ‑> int

Length of the inner buffer.

val length : t ‑> int

Number of elements currently stored in the buffer.

val is_full : t ‑> bool

true if pushing an element would erase another element.

  • Since: 1.3
val blit_from : t ‑> Array.t ‑> int ‑> int ‑> unit

blit_from buf from_buf o len copies the slice o, ... o + len - 1 from -an input buffer from_buf to the end of the buffer. -If the slice is too large for the buffer, only the last part of the array -will be copied.

  • Raises Invalid_argument: if o,len is not a valid slice of s.
val blit_into : t ‑> Array.t ‑> int ‑> int ‑> int

blit_into buf to_buf o len copies at most len elements from buf -into to_buf starting at offset o in s.

  • Returns the number of elements actually copied (min len (length buf)).
  • Raises Invalid_argument: if o,len is not a valid slice of s.
val append : t ‑> into:t ‑> unit

append b ~into copies all data from b and adds it at the -end of into. Erases data of into if there is not enough room.

val to_list : t ‑> Array.elt list

Extract the current content into a list.

val clear : t ‑> unit

Clear the content of the buffer. Doesn't actually destroy the content.

val is_empty : t ‑> bool

Is the buffer empty (i.e. contains no elements)?

val junk_front : t ‑> unit

Drop the front element from t.

  • Raises Empty: if the buffer is already empty.
val junk_back : t ‑> unit

Drop the back element from t.

  • Raises Empty: if the buffer is already empty.
val skip : t ‑> int ‑> unit

skip b len removes len elements from the front of b.

  • Raises Invalid_argument: if len > length b.
val iter : t ‑> f:(Array.elt ‑> unit) ‑> unit

iter b ~f calls f i t for each element t in buf.

val iteri : t ‑> f:(int ‑> Array.elt ‑> unit) ‑> unit

iteri b ~f calls f i t for each element t in buf, with i -being its relative index within buf.

val get_front : t ‑> int ‑> Array.elt

get_front buf i returns the i-th element of buf from the front, i.e. -the one returned by take_front buf after i-1 calls to junk_front buf.

  • Raises Invalid_argument: if the index is invalid (> length buf).
val get_back : t ‑> int ‑> Array.elt

get_back buf i returns the i-th element of buf from the back, i.e. -the one returned by take_back buf after i-1 calls to junk_back buf.

  • Raises Invalid_argument: if the index is invalid (> length buf).
val push_back : t ‑> Array.elt ‑> unit

Push value at the back of t. -If t.bounded=false, the buffer will grow as needed, -otherwise the oldest elements are replaced first.

val peek_front : t ‑> Array.elt option

First value from front of t, without modification.

val peek_front_exn : t ‑> Array.elt

First value from front of t, without modification.

  • Raises Empty: if buffer is empty.
  • Since: 1.3
val peek_back : t ‑> Array.elt option

Get the last value from back of t, without modification.

val peek_back_exn : t ‑> Array.elt

Get the last value from back of t, without modification.

  • Raises Empty: if buffer is empty.
  • Since: 1.3
val take_back : t ‑> Array.elt option

Take and remove the last value from back of t, if any.

val take_back_exn : t ‑> Array.elt

Take and remove the last value from back of t.

  • Raises Empty: if buffer is already empty.
val take_front : t ‑> Array.elt option

Take and remove the first value from front of t, if any.

val take_front_exn : t ‑> Array.elt

Take and remove the first value from front of t.

  • Raises Empty: if buffer is already empty.
val of_array : Array.t ‑> t

Create a buffer from an initial array, but doesn't take ownership -of it (still allocates a new internal array).

  • Since: 0.11
val to_array : t ‑> Array.t

Create an array from the elements, in order.

  • Since: 0.11
\ No newline at end of file diff --git a/dev/containers.data/CCRingBuffer/MakeFromArray/argument-1-A/index.html b/dev/containers.data/CCRingBuffer/MakeFromArray/argument-1-A/index.html deleted file mode 100644 index 45eea5e2..00000000 --- a/dev/containers.data/CCRingBuffer/MakeFromArray/argument-1-A/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -1-A (containers.data.CCRingBuffer.MakeFromArray.1-A)

Parameter CCRingBuffer.MakeFromArray.1-A

type elt

The element type

type t

The type of an array instance

val create : int ‑> t

Make an array of the given size, filled with dummy elements.

val length : t ‑> int

length t gets the total number of elements currently in t.

val get : t ‑> int ‑> elt

get t i gets the element at position i.

val set : t ‑> int ‑> elt ‑> unit

set t i e sets the element at position i to e.

val sub : t ‑> int ‑> int ‑> t

sub t i len gets the sub-array of t from -position i to i + len.

val copy : t ‑> t

copy t makes a fresh copy of the array t.

val blit : t ‑> int ‑> t ‑> int ‑> int ‑> unit

blit t s arr i len copies len elements from arr starting at i -to position s from t.

val iter : (elt ‑> unit) ‑> t ‑> unit

iter f t iterates over the array t invoking f with -the current element, in array order.

\ No newline at end of file diff --git a/dev/containers.data/CCRingBuffer/MakeFromArray/index.html b/dev/containers.data/CCRingBuffer/MakeFromArray/index.html deleted file mode 100644 index a2889dad..00000000 --- a/dev/containers.data/CCRingBuffer/MakeFromArray/index.html +++ /dev/null @@ -1,15 +0,0 @@ - -MakeFromArray (containers.data.CCRingBuffer.MakeFromArray)

Module CCRingBuffer.MakeFromArray

Makes a ring buffer module with the given array type

Parameters

Signature

module Array = A

The module type of Array for this ring buffer

type t

Defines the bounded ring buffer type

exception Empty

Raised in querying functions when the buffer is empty

val create : int ‑> t

create size creates a new bounded buffer with given size. -The underlying array is allocated immediately and no further (large) -allocation will happen from now on.

  • Raises Invalid_argument: if the argument is < 1.
val copy : t ‑> t

Make a fresh copy of the buffer.

val capacity : t ‑> int

Length of the inner buffer.

val length : t ‑> int

Number of elements currently stored in the buffer.

val is_full : t ‑> bool

true if pushing an element would erase another element.

  • Since: 1.3
val blit_from : t ‑> Array.t ‑> int ‑> int ‑> unit

blit_from buf from_buf o len copies the slice o, ... o + len - 1 from -an input buffer from_buf to the end of the buffer. -If the slice is too large for the buffer, only the last part of the array -will be copied.

  • Raises Invalid_argument: if o,len is not a valid slice of s.
val blit_into : t ‑> Array.t ‑> int ‑> int ‑> int

blit_into buf to_buf o len copies at most len elements from buf -into to_buf starting at offset o in s.

  • Returns the number of elements actually copied (min len (length buf)).
  • Raises Invalid_argument: if o,len is not a valid slice of s.
val append : t ‑> into:t ‑> unit

append b ~into copies all data from b and adds it at the -end of into. Erases data of into if there is not enough room.

val to_list : t ‑> Array.elt list

Extract the current content into a list.

val clear : t ‑> unit

Clear the content of the buffer. Doesn't actually destroy the content.

val is_empty : t ‑> bool

Is the buffer empty (i.e. contains no elements)?

val junk_front : t ‑> unit

Drop the front element from t.

  • Raises Empty: if the buffer is already empty.
val junk_back : t ‑> unit

Drop the back element from t.

  • Raises Empty: if the buffer is already empty.
val skip : t ‑> int ‑> unit

skip b len removes len elements from the front of b.

  • Raises Invalid_argument: if len > length b.
val iter : t ‑> f:(Array.elt ‑> unit) ‑> unit

iter b ~f calls f i t for each element t in buf.

val iteri : t ‑> f:(int ‑> Array.elt ‑> unit) ‑> unit

iteri b ~f calls f i t for each element t in buf, with i -being its relative index within buf.

val get_front : t ‑> int ‑> Array.elt

get_front buf i returns the i-th element of buf from the front, i.e. -the one returned by take_front buf after i-1 calls to junk_front buf.

  • Raises Invalid_argument: if the index is invalid (> length buf).
val get_back : t ‑> int ‑> Array.elt

get_back buf i returns the i-th element of buf from the back, i.e. -the one returned by take_back buf after i-1 calls to junk_back buf.

  • Raises Invalid_argument: if the index is invalid (> length buf).
val push_back : t ‑> Array.elt ‑> unit

Push value at the back of t. -If t.bounded=false, the buffer will grow as needed, -otherwise the oldest elements are replaced first.

val peek_front : t ‑> Array.elt option

First value from front of t, without modification.

val peek_front_exn : t ‑> Array.elt

First value from front of t, without modification.

  • Raises Empty: if buffer is empty.
  • Since: 1.3
val peek_back : t ‑> Array.elt option

Get the last value from back of t, without modification.

val peek_back_exn : t ‑> Array.elt

Get the last value from back of t, without modification.

  • Raises Empty: if buffer is empty.
  • Since: 1.3
val take_back : t ‑> Array.elt option

Take and remove the last value from back of t, if any.

val take_back_exn : t ‑> Array.elt

Take and remove the last value from back of t.

  • Raises Empty: if buffer is already empty.
val take_front : t ‑> Array.elt option

Take and remove the first value from front of t, if any.

val take_front_exn : t ‑> Array.elt

Take and remove the first value from front of t.

  • Raises Empty: if buffer is already empty.
val of_array : Array.t ‑> t

Create a buffer from an initial array, but doesn't take ownership -of it (still allocates a new internal array).

  • Since: 0.11
val to_array : t ‑> Array.t

Create an array from the elements, in order.

  • Since: 0.11
\ No newline at end of file diff --git a/dev/containers.data/CCRingBuffer/index.html b/dev/containers.data/CCRingBuffer/index.html deleted file mode 100644 index d71993b0..00000000 --- a/dev/containers.data/CCRingBuffer/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -CCRingBuffer (containers.data.CCRingBuffer)

Module CCRingBuffer

Circular Buffer (Deque)

Useful for IO, or as a bounded-size alternative to Queue when -batch operations are needed.

status: experimental

Change in the API to provide only a bounded buffer since 1.3

  • Since: 0.9

Underlying Array

module Array : sig ... end

The abstract type for arrays

module type S : sig ... end

Ring Buffer

module Byte : S with module Array = Array.Byte

An efficient byte based ring buffer

module MakeFromArray : functor (A : Array.S) -> S with module Array = A

Makes a ring buffer module with the given array type

module Make : functor (X : sig ... end) -> S with type Array.elt = X.t and type Array.t = X.t array

Buffer using regular arrays

\ No newline at end of file diff --git a/dev/containers.data/CCRingBuffer/module-type-S/Array/index.html b/dev/containers.data/CCRingBuffer/module-type-S/Array/index.html deleted file mode 100644 index e20d55b7..00000000 --- a/dev/containers.data/CCRingBuffer/module-type-S/Array/index.html +++ /dev/null @@ -1,5 +0,0 @@ - -Array (containers.data.CCRingBuffer.S.Array)

Module CCRingBuffer.S.Array

The module type of Array for this ring buffer

type elt

The element type

type t

The type of an array instance

val create : int ‑> t

Make an array of the given size, filled with dummy elements.

val length : t ‑> int

length t gets the total number of elements currently in t.

val get : t ‑> int ‑> elt

get t i gets the element at position i.

val set : t ‑> int ‑> elt ‑> unit

set t i e sets the element at position i to e.

val sub : t ‑> int ‑> int ‑> t

sub t i len gets the sub-array of t from -position i to i + len.

val copy : t ‑> t

copy t makes a fresh copy of the array t.

val blit : t ‑> int ‑> t ‑> int ‑> int ‑> unit

blit t s arr i len copies len elements from arr starting at i -to position s from t.

val iter : (elt ‑> unit) ‑> t ‑> unit

iter f t iterates over the array t invoking f with -the current element, in array order.

\ No newline at end of file diff --git a/dev/containers.data/CCRingBuffer/module-type-S/index.html b/dev/containers.data/CCRingBuffer/module-type-S/index.html deleted file mode 100644 index 24e20ac0..00000000 --- a/dev/containers.data/CCRingBuffer/module-type-S/index.html +++ /dev/null @@ -1,16 +0,0 @@ - -S (containers.data.CCRingBuffer.S)

Module type CCRingBuffer.S

Ring Buffer

The abstract ring buffer type, made concrete by choice of -ARRAY module implementation

module Array : Array.S

The module type of Array for this ring buffer

type t

Defines the bounded ring buffer type

exception Empty

Raised in querying functions when the buffer is empty

val create : int ‑> t

create size creates a new bounded buffer with given size. -The underlying array is allocated immediately and no further (large) -allocation will happen from now on.

  • Raises Invalid_argument: if the argument is < 1.
val copy : t ‑> t

Make a fresh copy of the buffer.

val capacity : t ‑> int

Length of the inner buffer.

val length : t ‑> int

Number of elements currently stored in the buffer.

val is_full : t ‑> bool

true if pushing an element would erase another element.

  • Since: 1.3
val blit_from : t ‑> Array.t ‑> int ‑> int ‑> unit

blit_from buf from_buf o len copies the slice o, ... o + len - 1 from -an input buffer from_buf to the end of the buffer. -If the slice is too large for the buffer, only the last part of the array -will be copied.

  • Raises Invalid_argument: if o,len is not a valid slice of s.
val blit_into : t ‑> Array.t ‑> int ‑> int ‑> int

blit_into buf to_buf o len copies at most len elements from buf -into to_buf starting at offset o in s.

  • Returns the number of elements actually copied (min len (length buf)).
  • Raises Invalid_argument: if o,len is not a valid slice of s.
val append : t ‑> into:t ‑> unit

append b ~into copies all data from b and adds it at the -end of into. Erases data of into if there is not enough room.

val to_list : t ‑> Array.elt list

Extract the current content into a list.

val clear : t ‑> unit

Clear the content of the buffer. Doesn't actually destroy the content.

val is_empty : t ‑> bool

Is the buffer empty (i.e. contains no elements)?

val junk_front : t ‑> unit

Drop the front element from t.

  • Raises Empty: if the buffer is already empty.
val junk_back : t ‑> unit

Drop the back element from t.

  • Raises Empty: if the buffer is already empty.
val skip : t ‑> int ‑> unit

skip b len removes len elements from the front of b.

  • Raises Invalid_argument: if len > length b.
val iter : t ‑> f:(Array.elt ‑> unit) ‑> unit

iter b ~f calls f i t for each element t in buf.

val iteri : t ‑> f:(int ‑> Array.elt ‑> unit) ‑> unit

iteri b ~f calls f i t for each element t in buf, with i -being its relative index within buf.

val get_front : t ‑> int ‑> Array.elt

get_front buf i returns the i-th element of buf from the front, i.e. -the one returned by take_front buf after i-1 calls to junk_front buf.

  • Raises Invalid_argument: if the index is invalid (> length buf).
val get_back : t ‑> int ‑> Array.elt

get_back buf i returns the i-th element of buf from the back, i.e. -the one returned by take_back buf after i-1 calls to junk_back buf.

  • Raises Invalid_argument: if the index is invalid (> length buf).
val push_back : t ‑> Array.elt ‑> unit

Push value at the back of t. -If t.bounded=false, the buffer will grow as needed, -otherwise the oldest elements are replaced first.

val peek_front : t ‑> Array.elt option

First value from front of t, without modification.

val peek_front_exn : t ‑> Array.elt

First value from front of t, without modification.

  • Raises Empty: if buffer is empty.
  • Since: 1.3
val peek_back : t ‑> Array.elt option

Get the last value from back of t, without modification.

val peek_back_exn : t ‑> Array.elt

Get the last value from back of t, without modification.

  • Raises Empty: if buffer is empty.
  • Since: 1.3
val take_back : t ‑> Array.elt option

Take and remove the last value from back of t, if any.

val take_back_exn : t ‑> Array.elt

Take and remove the last value from back of t.

  • Raises Empty: if buffer is already empty.
val take_front : t ‑> Array.elt option

Take and remove the first value from front of t, if any.

val take_front_exn : t ‑> Array.elt

Take and remove the first value from front of t.

  • Raises Empty: if buffer is already empty.
val of_array : Array.t ‑> t

Create a buffer from an initial array, but doesn't take ownership -of it (still allocates a new internal array).

  • Since: 0.11
val to_array : t ‑> Array.t

Create an array from the elements, in order.

  • Since: 0.11
\ No newline at end of file diff --git a/dev/containers.data/CCSimple_queue.odoc b/dev/containers.data/CCSimple_queue.odoc deleted file mode 100644 index 4a465e7f6cb193d40baa849def76ee2a6b3eb5a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3157 zcmbVOTWl0n7~Y*d$503;A&3gdl-=$H%kFZKa4BZm;?{ZrN&)e~l`ub)i zmsd&4>LMu;DfwFR)g7}gJ-Oh_wb3{G*WTRBVMYx4e5l6f8*v$ab;EqVkk7skFeF&E zeY94xt=XxfmNpe#lU0#bHpFOF$?7pllF%^Q4%Zd4SyHf)@9my7=i>Y|sk5uk52jK# zW41lJUe2kCW|9IVr}RQjHtS?VNgGzO^W$x!jy8YNzF^W%OP7DSa|Gb<04w>}xaM7< zRCm*0q@k(#>r4H%J!LT|bU>weg4+f~cbZ88veNo_P9 z=|7FvHyr=g+;r=LWF4Mo6w(PQUt*|wao|;vNVMrWk}#BQieXwPIV2CjtEFyRvX2B8Dk>cNkx;#^ z891hg? zOsPs=N-`*FZFX8Y?rW*KX)hsr-yaF5EWh5e_UyVIR7?4JVz3@u@Q6H9P5E6PC6 zf~N-eVqsEMqn1_HLgX)9UF=e+sER(dVSbE~jMb_NjFG83lcYdWX{ND%gM;n1&I-N` zfAVfoJQ$Vkit`r3fxGvA6^;$9@R3u2A%Dg;Y9m{=1Q*u$EnN?ViZ0kT>F9_VkJWeV_YSA zg78jsz%Pfgx|#u+d$=3GiO>#nWXYDoG?oc_PVcXf0wV-DC(CbNEc83(5gOb&SooY* z35<%EdJB7>V&M|EmGGh)))S&n*pA@`f>Ak>al>yo;VKJY8|P(4&s6C2T|J8HfTM zH*vEQTT`ww(i3}uQm5Z6IMBl)L6q-t;F)rCr6>A2(}#zD-~h+jbGAX_%W3mGY5&qg z;8|y!tWp8QZ!iAUc(e}YZgS%y=i>&W36t}Ap!Rd0)fF^I9*oe7Q5Xj<(ho2kxJo}n SV1+8&!stQ%WIg)>aQ*{z^V%N( diff --git a/dev/containers.data/CCSimple_queue/Infix/index.html b/dev/containers.data/CCSimple_queue/Infix/index.html deleted file mode 100644 index 83ae918b..00000000 --- a/dev/containers.data/CCSimple_queue/Infix/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Infix (containers.data.CCSimple_queue.Infix)

Module CCSimple_queue.Infix

val (>|=) : 'a t ‑> ('a ‑> 'b) ‑> 'b t

Alias to map.

val (@) : 'a t ‑> 'a t ‑> 'a t

Alias to map.

Alias to append.

val (<::) : 'a t ‑> 'a ‑> 'a t

Alias to append.

Alias to snoc.

\ No newline at end of file diff --git a/dev/containers.data/CCSimple_queue/index.html b/dev/containers.data/CCSimple_queue/index.html deleted file mode 100644 index 521b50ab..00000000 --- a/dev/containers.data/CCSimple_queue/index.html +++ /dev/null @@ -1,4 +0,0 @@ - -CCSimple_queue (containers.data.CCSimple_queue)

Module CCSimple_queue

Functional queues (fifo)

Simple implementation of functional queues

  • Since: 1.3
type 'a sequence = ('a ‑> unit) ‑> unit
type 'a printer = Format.formatter ‑> 'a ‑> unit
type 'a klist = unit ‑> [ `Nil | `Cons of 'a * 'a klist ]
type 'a gen = unit ‑> 'a option
type +'a t

Queue containing elements of type 'a

val empty : 'a t
val is_empty : 'a t ‑> bool
val push : 'a ‑> 'a t ‑> 'a t

Push element at the end of the queue.

val snoc : 'a t ‑> 'a ‑> 'a t

Flip version of push.

val peek : 'a t ‑> 'a option

First element of the queue.

val peek_exn : 'a t ‑> 'a

Same as peek but

  • Raises Invalid_argument: if the queue is empty.
val pop : 'a t ‑> ('a * 'a t) option

Get and remove the first element.

val pop_exn : 'a t ‑> 'a * 'a t

Same as pop, but fails on empty queues.

  • Raises Invalid_argument: if the queue is empty.
val junk : 'a t ‑> 'a t

Remove first element. If the queue is empty, do nothing.

val append : 'a t ‑> 'a t ‑> 'a t

Append two queues. Elements from the second one come -after elements of the first one. -Linear in the size of the second queue.

val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t

Map values.

val rev : 'a t ‑> 'a t

Reverse the queue. Constant time.

val equal : ('a ‑> 'a ‑> bool) ‑> 'a t ‑> 'a t ‑> bool
module Infix : sig ... end
include module type of Infix
val (>|=) : 'a t ‑> ('a ‑> 'b) ‑> 'b t

Alias to map.

val (@) : 'a t ‑> 'a t ‑> 'a t

Alias to map.

Alias to append.

val (<::) : 'a t ‑> 'a ‑> 'a t

Alias to append.

Alias to snoc.

val length : 'a t ‑> int

Number of elements in the queue (linear in time).

val fold : ('b ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b
val iter : ('a ‑> unit) ‑> 'a t ‑> unit
val to_list : 'a t ‑> 'a list
val add_list : 'a t ‑> 'a list ‑> 'a t
val of_list : 'a list ‑> 'a t
val to_seq : 'a t ‑> 'a sequence
val add_seq : 'a t ‑> 'a sequence ‑> 'a t
val of_seq : 'a sequence ‑> 'a t
val to_klist : 'a t ‑> 'a klist
val add_klist : 'a t ‑> 'a klist ‑> 'a t
val of_klist : 'a klist ‑> 'a t
val of_gen : 'a gen ‑> 'a t
val add_gen : 'a t ‑> 'a gen ‑> 'a t
val to_gen : 'a t ‑> 'a gen

IO

val pp : ?⁠sep:unit printer ‑> 'a printer ‑> 'a t printer
\ No newline at end of file diff --git a/dev/containers.data/CCTrie.odoc b/dev/containers.data/CCTrie.odoc deleted file mode 100644 index 35c38959e1a026290ff156625398ec48fd52087d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10017 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 -1-W (containers.data.CCTrie.Make.1-W)

Parameter CCTrie.Make.1-W

type t
type char_
val compare : char_ ‑> char_ ‑> int
val to_seq : t ‑> char_ sequence
val of_list : char_ list ‑> t
\ No newline at end of file diff --git a/dev/containers.data/CCTrie/Make/index.html b/dev/containers.data/CCTrie/Make/index.html deleted file mode 100644 index 8aa89f72..00000000 --- a/dev/containers.data/CCTrie/Make/index.html +++ /dev/null @@ -1,11 +0,0 @@ - -Make (containers.data.CCTrie.Make)

Module CCTrie.Make

Parameters

Signature

type char_ = W.char_
type key = W.t
type 'a t
val empty : 'a t
val is_empty : _ t ‑> bool
val add : key ‑> 'a ‑> 'a t ‑> 'a t

Add a binding to the trie (possibly erasing the previous one).

val remove : key ‑> 'a t ‑> 'a t

Remove the key, if present.

val find : key ‑> 'a t ‑> 'a option

Find the value associated with the key, if any.

val find_exn : key ‑> 'a t ‑> 'a

Same as find but can fail.

  • Raises Not_found: if the key is not present.
val longest_prefix : key ‑> 'a t ‑> key

longest_prefix k m finds the longest prefix of k that leads to -at least one path in m (it does not mean that the prefix is bound to -a value.

Example: if m has keys "abc0" and "abcd", then longest_prefix "abc2" m -will return "abc".

  • Since: 0.17
val update : key ‑> ('a option ‑> 'a option) ‑> 'a t ‑> 'a t

Update the binding for the given key. The function is given -None if the key is absent, or Some v if key is bound to v; -if it returns None the key is removed, otherwise it -returns Some y and key becomes bound to y.

val fold : ('b ‑> key ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b

Fold on key/value bindings. Will use WORD.of_list to rebuild keys.

val mapi : (key ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t

Map values, giving both key and value. Will use WORD.of_list to rebuild keys.

  • Since: 0.17
val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t

Map values, giving only the value.

  • Since: 0.17
val iter : (key ‑> 'a ‑> unit) ‑> 'a t ‑> unit

Same as fold, but for effectful functions.

val fold_values : ('b ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b

More efficient version of fold, that doesn't keep keys.

val iter_values : ('a ‑> unit) ‑> 'a t ‑> unit
val merge : ('a ‑> 'a ‑> 'a option) ‑> 'a t ‑> 'a t ‑> 'a t

Merge two tries together. The function is used in -case of conflicts, when a key belongs to both tries.

val size : _ t ‑> int

Number of bindings.

Conversions
val to_list : 'a t ‑> (key * 'a) list
val of_list : (key * 'a) list ‑> 'a t
val to_seq : 'a t ‑> (key * 'a) sequence
val of_seq : (key * 'a) sequence ‑> 'a t
val to_seq_values : 'a t ‑> 'a sequence
val to_tree : 'a t ‑> [ `Char of char_ | `Val of 'a | `Switch ] ktree
Ranges
val above : key ‑> 'a t ‑> (key * 'a) sequence

All bindings whose key is bigger or equal to the given key, in -ascending order.

val below : key ‑> 'a t ‑> (key * 'a) sequence

All bindings whose key is smaller or equal to the given key, -in decreasing order.

\ No newline at end of file diff --git a/dev/containers.data/CCTrie/MakeArray/argument-1-X/index.html b/dev/containers.data/CCTrie/MakeArray/argument-1-X/index.html deleted file mode 100644 index 8aad7177..00000000 --- a/dev/containers.data/CCTrie/MakeArray/argument-1-X/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-X (containers.data.CCTrie.MakeArray.1-X)

Parameter CCTrie.MakeArray.1-X

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCTrie/MakeArray/index.html b/dev/containers.data/CCTrie/MakeArray/index.html deleted file mode 100644 index c7bb46e7..00000000 --- a/dev/containers.data/CCTrie/MakeArray/index.html +++ /dev/null @@ -1,11 +0,0 @@ - -MakeArray (containers.data.CCTrie.MakeArray)

Module CCTrie.MakeArray

Parameters

Signature

type char_ = X.t
type key = X.t array
type 'a t
val empty : 'a t
val is_empty : _ t ‑> bool
val add : key ‑> 'a ‑> 'a t ‑> 'a t

Add a binding to the trie (possibly erasing the previous one).

val remove : key ‑> 'a t ‑> 'a t

Remove the key, if present.

val find : key ‑> 'a t ‑> 'a option

Find the value associated with the key, if any.

val find_exn : key ‑> 'a t ‑> 'a

Same as find but can fail.

  • Raises Not_found: if the key is not present.
val longest_prefix : key ‑> 'a t ‑> key

longest_prefix k m finds the longest prefix of k that leads to -at least one path in m (it does not mean that the prefix is bound to -a value.

Example: if m has keys "abc0" and "abcd", then longest_prefix "abc2" m -will return "abc".

  • Since: 0.17
val update : key ‑> ('a option ‑> 'a option) ‑> 'a t ‑> 'a t

Update the binding for the given key. The function is given -None if the key is absent, or Some v if key is bound to v; -if it returns None the key is removed, otherwise it -returns Some y and key becomes bound to y.

val fold : ('b ‑> key ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b

Fold on key/value bindings. Will use WORD.of_list to rebuild keys.

val mapi : (key ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t

Map values, giving both key and value. Will use WORD.of_list to rebuild keys.

  • Since: 0.17
val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t

Map values, giving only the value.

  • Since: 0.17
val iter : (key ‑> 'a ‑> unit) ‑> 'a t ‑> unit

Same as fold, but for effectful functions.

val fold_values : ('b ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b

More efficient version of fold, that doesn't keep keys.

val iter_values : ('a ‑> unit) ‑> 'a t ‑> unit
val merge : ('a ‑> 'a ‑> 'a option) ‑> 'a t ‑> 'a t ‑> 'a t

Merge two tries together. The function is used in -case of conflicts, when a key belongs to both tries.

val size : _ t ‑> int

Number of bindings.

Conversions
val to_list : 'a t ‑> (key * 'a) list
val of_list : (key * 'a) list ‑> 'a t
val to_seq : 'a t ‑> (key * 'a) sequence
val of_seq : (key * 'a) sequence ‑> 'a t
val to_seq_values : 'a t ‑> 'a sequence
val to_tree : 'a t ‑> [ `Char of char_ | `Val of 'a | `Switch ] ktree
Ranges
val above : key ‑> 'a t ‑> (key * 'a) sequence

All bindings whose key is bigger or equal to the given key, in -ascending order.

val below : key ‑> 'a t ‑> (key * 'a) sequence

All bindings whose key is smaller or equal to the given key, -in decreasing order.

\ No newline at end of file diff --git a/dev/containers.data/CCTrie/MakeList/argument-1-X/index.html b/dev/containers.data/CCTrie/MakeList/argument-1-X/index.html deleted file mode 100644 index f29b9408..00000000 --- a/dev/containers.data/CCTrie/MakeList/argument-1-X/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-X (containers.data.CCTrie.MakeList.1-X)

Parameter CCTrie.MakeList.1-X

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCTrie/MakeList/index.html b/dev/containers.data/CCTrie/MakeList/index.html deleted file mode 100644 index 1a9d8aa4..00000000 --- a/dev/containers.data/CCTrie/MakeList/index.html +++ /dev/null @@ -1,11 +0,0 @@ - -MakeList (containers.data.CCTrie.MakeList)

Module CCTrie.MakeList

Parameters

Signature

type char_ = X.t
type key = X.t list
type 'a t
val empty : 'a t
val is_empty : _ t ‑> bool
val add : key ‑> 'a ‑> 'a t ‑> 'a t

Add a binding to the trie (possibly erasing the previous one).

val remove : key ‑> 'a t ‑> 'a t

Remove the key, if present.

val find : key ‑> 'a t ‑> 'a option

Find the value associated with the key, if any.

val find_exn : key ‑> 'a t ‑> 'a

Same as find but can fail.

  • Raises Not_found: if the key is not present.
val longest_prefix : key ‑> 'a t ‑> key

longest_prefix k m finds the longest prefix of k that leads to -at least one path in m (it does not mean that the prefix is bound to -a value.

Example: if m has keys "abc0" and "abcd", then longest_prefix "abc2" m -will return "abc".

  • Since: 0.17
val update : key ‑> ('a option ‑> 'a option) ‑> 'a t ‑> 'a t

Update the binding for the given key. The function is given -None if the key is absent, or Some v if key is bound to v; -if it returns None the key is removed, otherwise it -returns Some y and key becomes bound to y.

val fold : ('b ‑> key ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b

Fold on key/value bindings. Will use WORD.of_list to rebuild keys.

val mapi : (key ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t

Map values, giving both key and value. Will use WORD.of_list to rebuild keys.

  • Since: 0.17
val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t

Map values, giving only the value.

  • Since: 0.17
val iter : (key ‑> 'a ‑> unit) ‑> 'a t ‑> unit

Same as fold, but for effectful functions.

val fold_values : ('b ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b

More efficient version of fold, that doesn't keep keys.

val iter_values : ('a ‑> unit) ‑> 'a t ‑> unit
val merge : ('a ‑> 'a ‑> 'a option) ‑> 'a t ‑> 'a t ‑> 'a t

Merge two tries together. The function is used in -case of conflicts, when a key belongs to both tries.

val size : _ t ‑> int

Number of bindings.

Conversions
val to_list : 'a t ‑> (key * 'a) list
val of_list : (key * 'a) list ‑> 'a t
val to_seq : 'a t ‑> (key * 'a) sequence
val of_seq : (key * 'a) sequence ‑> 'a t
val to_seq_values : 'a t ‑> 'a sequence
val to_tree : 'a t ‑> [ `Char of char_ | `Val of 'a | `Switch ] ktree
Ranges
val above : key ‑> 'a t ‑> (key * 'a) sequence

All bindings whose key is bigger or equal to the given key, in -ascending order.

val below : key ‑> 'a t ‑> (key * 'a) sequence

All bindings whose key is smaller or equal to the given key, -in decreasing order.

\ No newline at end of file diff --git a/dev/containers.data/CCTrie/String/index.html b/dev/containers.data/CCTrie/String/index.html deleted file mode 100644 index 984ef4ed..00000000 --- a/dev/containers.data/CCTrie/String/index.html +++ /dev/null @@ -1,11 +0,0 @@ - -String (containers.data.CCTrie.String)

Module CCTrie.String

type char_ = char
type key = string
type 'a t
val empty : 'a t
val is_empty : _ t ‑> bool
val add : key ‑> 'a ‑> 'a t ‑> 'a t

Add a binding to the trie (possibly erasing the previous one).

val remove : key ‑> 'a t ‑> 'a t

Remove the key, if present.

val find : key ‑> 'a t ‑> 'a option

Find the value associated with the key, if any.

val find_exn : key ‑> 'a t ‑> 'a

Same as find but can fail.

  • Raises Not_found: if the key is not present.
val longest_prefix : key ‑> 'a t ‑> key

longest_prefix k m finds the longest prefix of k that leads to -at least one path in m (it does not mean that the prefix is bound to -a value.

Example: if m has keys "abc0" and "abcd", then longest_prefix "abc2" m -will return "abc".

  • Since: 0.17
val update : key ‑> ('a option ‑> 'a option) ‑> 'a t ‑> 'a t

Update the binding for the given key. The function is given -None if the key is absent, or Some v if key is bound to v; -if it returns None the key is removed, otherwise it -returns Some y and key becomes bound to y.

val fold : ('b ‑> key ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b

Fold on key/value bindings. Will use WORD.of_list to rebuild keys.

val mapi : (key ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t

Map values, giving both key and value. Will use WORD.of_list to rebuild keys.

  • Since: 0.17
val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t

Map values, giving only the value.

  • Since: 0.17
val iter : (key ‑> 'a ‑> unit) ‑> 'a t ‑> unit

Same as fold, but for effectful functions.

val fold_values : ('b ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b

More efficient version of fold, that doesn't keep keys.

val iter_values : ('a ‑> unit) ‑> 'a t ‑> unit
val merge : ('a ‑> 'a ‑> 'a option) ‑> 'a t ‑> 'a t ‑> 'a t

Merge two tries together. The function is used in -case of conflicts, when a key belongs to both tries.

val size : _ t ‑> int

Number of bindings.

Conversions
val to_list : 'a t ‑> (key * 'a) list
val of_list : (key * 'a) list ‑> 'a t
val to_seq : 'a t ‑> (key * 'a) sequence
val of_seq : (key * 'a) sequence ‑> 'a t
val to_seq_values : 'a t ‑> 'a sequence
val to_tree : 'a t ‑> [ `Char of char_ | `Val of 'a | `Switch ] ktree
Ranges
val above : key ‑> 'a t ‑> (key * 'a) sequence

All bindings whose key is bigger or equal to the given key, in -ascending order.

val below : key ‑> 'a t ‑> (key * 'a) sequence

All bindings whose key is smaller or equal to the given key, -in decreasing order.

\ No newline at end of file diff --git a/dev/containers.data/CCTrie/index.html b/dev/containers.data/CCTrie/index.html deleted file mode 100644 index 55fa3a34..00000000 --- a/dev/containers.data/CCTrie/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -CCTrie (containers.data.CCTrie)

Module CCTrie

Prefix Tree

type 'a sequence = ('a ‑> unit) ‑> unit
type 'a ktree = unit ‑> [ `Nil | `Node of 'a * 'a ktree list ]

Signatures

A Composite Word

Words are made of characters, who belong to a total order

module type WORD : sig ... end
module type S : sig ... end

Implementation

module Make : functor (W : WORD) -> S with type key = W.t and type char_ = W.char_
module type ORDERED : sig ... end
module MakeArray : functor (X : ORDERED) -> S with type key = X.t array and type char_ = X.t
module MakeList : functor (X : ORDERED) -> S with type key = X.t list and type char_ = X.t
module String : S with type key = string and type char_ = char
\ No newline at end of file diff --git a/dev/containers.data/CCTrie/module-type-ORDERED/index.html b/dev/containers.data/CCTrie/module-type-ORDERED/index.html deleted file mode 100644 index b2352f56..00000000 --- a/dev/containers.data/CCTrie/module-type-ORDERED/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -ORDERED (containers.data.CCTrie.ORDERED)

Module type CCTrie.ORDERED

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCTrie/module-type-S/index.html b/dev/containers.data/CCTrie/module-type-S/index.html deleted file mode 100644 index e9c3f55f..00000000 --- a/dev/containers.data/CCTrie/module-type-S/index.html +++ /dev/null @@ -1,11 +0,0 @@ - -S (containers.data.CCTrie.S)

Module type CCTrie.S

type char_
type key
type 'a t
val empty : 'a t
val is_empty : _ t ‑> bool
val add : key ‑> 'a ‑> 'a t ‑> 'a t

Add a binding to the trie (possibly erasing the previous one).

val remove : key ‑> 'a t ‑> 'a t

Remove the key, if present.

val find : key ‑> 'a t ‑> 'a option

Find the value associated with the key, if any.

val find_exn : key ‑> 'a t ‑> 'a

Same as find but can fail.

  • Raises Not_found: if the key is not present.
val longest_prefix : key ‑> 'a t ‑> key

longest_prefix k m finds the longest prefix of k that leads to -at least one path in m (it does not mean that the prefix is bound to -a value.

Example: if m has keys "abc0" and "abcd", then longest_prefix "abc2" m -will return "abc".

  • Since: 0.17
val update : key ‑> ('a option ‑> 'a option) ‑> 'a t ‑> 'a t

Update the binding for the given key. The function is given -None if the key is absent, or Some v if key is bound to v; -if it returns None the key is removed, otherwise it -returns Some y and key becomes bound to y.

val fold : ('b ‑> key ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b

Fold on key/value bindings. Will use WORD.of_list to rebuild keys.

val mapi : (key ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t

Map values, giving both key and value. Will use WORD.of_list to rebuild keys.

  • Since: 0.17
val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t

Map values, giving only the value.

  • Since: 0.17
val iter : (key ‑> 'a ‑> unit) ‑> 'a t ‑> unit

Same as fold, but for effectful functions.

val fold_values : ('b ‑> 'a ‑> 'b) ‑> 'b ‑> 'a t ‑> 'b

More efficient version of fold, that doesn't keep keys.

val iter_values : ('a ‑> unit) ‑> 'a t ‑> unit
val merge : ('a ‑> 'a ‑> 'a option) ‑> 'a t ‑> 'a t ‑> 'a t

Merge two tries together. The function is used in -case of conflicts, when a key belongs to both tries.

val size : _ t ‑> int

Number of bindings.

Conversions
val to_list : 'a t ‑> (key * 'a) list
val of_list : (key * 'a) list ‑> 'a t
val to_seq : 'a t ‑> (key * 'a) sequence
val of_seq : (key * 'a) sequence ‑> 'a t
val to_seq_values : 'a t ‑> 'a sequence
val to_tree : 'a t ‑> [ `Char of char_ | `Val of 'a | `Switch ] ktree
Ranges
val above : key ‑> 'a t ‑> (key * 'a) sequence

All bindings whose key is bigger or equal to the given key, in -ascending order.

val below : key ‑> 'a t ‑> (key * 'a) sequence

All bindings whose key is smaller or equal to the given key, -in decreasing order.

\ No newline at end of file diff --git a/dev/containers.data/CCTrie/module-type-WORD/index.html b/dev/containers.data/CCTrie/module-type-WORD/index.html deleted file mode 100644 index 2f9b256f..00000000 --- a/dev/containers.data/CCTrie/module-type-WORD/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -WORD (containers.data.CCTrie.WORD)

Module type CCTrie.WORD

type t
type char_
val compare : char_ ‑> char_ ‑> int
val to_seq : t ‑> char_ sequence
val of_list : char_ list ‑> t
\ No newline at end of file diff --git a/dev/containers.data/CCWBTree.odoc b/dev/containers.data/CCWBTree.odoc deleted file mode 100644 index c4a8dd3af2b757ef45ec9428fc3585ac8de57460..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9127 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 diff --git a/dev/containers.data/CCWBTree/Make/argument-1-X/index.html b/dev/containers.data/CCWBTree/Make/argument-1-X/index.html deleted file mode 100644 index e31dd146..00000000 --- a/dev/containers.data/CCWBTree/Make/argument-1-X/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-X (containers.data.CCWBTree.Make.1-X)

Parameter CCWBTree.Make.1-X

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCWBTree/Make/index.html b/dev/containers.data/CCWBTree/Make/index.html deleted file mode 100644 index 3514d879..00000000 --- a/dev/containers.data/CCWBTree/Make/index.html +++ /dev/null @@ -1,12 +0,0 @@ - -Make (containers.data.CCWBTree.Make)

Module CCWBTree.Make

Parameters

X : ORD

Signature

type key = X.t
type +'a t
val empty : 'a t
val is_empty : _ t ‑> bool
val singleton : key ‑> 'a ‑> 'a t
val mem : key ‑> _ t ‑> bool
val get : key ‑> 'a t ‑> 'a option
val get_exn : key ‑> 'a t ‑> 'a
  • Raises Not_found: if the key is not present.
val nth : int ‑> 'a t ‑> (key * 'a) option

nth i m returns the i-th key, value in the ascending -order. Complexity is O(log (cardinal m)).

val nth_exn : int ‑> 'a t ‑> key * 'a
  • Raises Not_found: if the index is invalid.
val get_rank : key ‑> 'a t ‑> [ `At of int | `After of int | `First ]

get_rank k m looks for the rank of k in m, i.e. the index -of k in the sorted list of bindings of m. -let (`At n) = get_rank k m in nth_exn n m = get m k should hold.

  • Since: 1.4
val add : key ‑> 'a ‑> 'a t ‑> 'a t
val remove : key ‑> 'a t ‑> 'a t
val update : key ‑> ('a option ‑> 'a option) ‑> 'a t ‑> 'a t

update k f m calls f (Some v) if get k m = Some v, f None -otherwise. Then, if f returns Some v' it binds k to v', -if f returns None it removes k.

val cardinal : _ t ‑> int
val weight : _ t ‑> int
val fold : f:('b ‑> key ‑> 'a ‑> 'b) ‑> x:'b ‑> 'a t ‑> 'b
val mapi : f:(key ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t

Map values, giving both key and value. Will use WORD.of_list to rebuild keys.

  • Since: 0.17
val map : f:('a ‑> 'b) ‑> 'a t ‑> 'b t

Map values, giving only the value.

  • Since: 0.17
val iter : f:(key ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val split : key ‑> 'a t ‑> 'a t * 'a option * 'a t

split k t returns l, o, r where l is the part of the map -with keys smaller than k, r has keys bigger than k, -and o = Some v if k, v belonged to the map.

val merge : f:(key ‑> 'a option ‑> 'b option ‑> 'c option) ‑> 'a t ‑> 'b t ‑> 'c t

Like Map.S.merge.

val extract_min : 'a t ‑> key * 'a * 'a t

extract_min m returns k, v, m' where k,v is the pair with the -smallest key in m, and m' does not contain k.

  • Raises Not_found: if the map is empty.
val extract_max : 'a t ‑> key * 'a * 'a t

extract_max m returns k, v, m' where k,v is the pair with the -highest key in m, and m' does not contain k.

  • Raises Not_found: if the map is empty.
val choose : 'a t ‑> (key * 'a) option
val choose_exn : 'a t ‑> key * 'a
  • Raises Not_found: if the tree is empty.
val random_choose : Random.State.t ‑> 'a t ‑> key * 'a

Randomly choose a (key,value) pair within the tree, using weights -as probability weights.

  • Raises Not_found: if the tree is empty.
val add_list : 'a t ‑> (key * 'a) list ‑> 'a t
val of_list : (key * 'a) list ‑> 'a t
val to_list : 'a t ‑> (key * 'a) list
val add_seq : 'a t ‑> (key * 'a) sequence ‑> 'a t
val of_seq : (key * 'a) sequence ‑> 'a t
val to_seq : 'a t ‑> (key * 'a) sequence
val add_gen : 'a t ‑> (key * 'a) gen ‑> 'a t
val of_gen : (key * 'a) gen ‑> 'a t
val to_gen : 'a t ‑> (key * 'a) gen
val pp : key printer ‑> 'a printer ‑> 'a t printer

Renamed from val print.

  • Since: 2.0
\ No newline at end of file diff --git a/dev/containers.data/CCWBTree/MakeFull/argument-1-X/index.html b/dev/containers.data/CCWBTree/MakeFull/argument-1-X/index.html deleted file mode 100644 index 708c2c23..00000000 --- a/dev/containers.data/CCWBTree/MakeFull/argument-1-X/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-X (containers.data.CCWBTree.MakeFull.1-X)

Parameter CCWBTree.MakeFull.1-X

include ORD
type t
val compare : t ‑> t ‑> int
val weight : t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCWBTree/MakeFull/index.html b/dev/containers.data/CCWBTree/MakeFull/index.html deleted file mode 100644 index d6bc915f..00000000 --- a/dev/containers.data/CCWBTree/MakeFull/index.html +++ /dev/null @@ -1,12 +0,0 @@ - -MakeFull (containers.data.CCWBTree.MakeFull)

Module CCWBTree.MakeFull

Use the custom X.weight function

Parameters

X : KEY

Signature

type key = X.t
type +'a t
val empty : 'a t
val is_empty : _ t ‑> bool
val singleton : key ‑> 'a ‑> 'a t
val mem : key ‑> _ t ‑> bool
val get : key ‑> 'a t ‑> 'a option
val get_exn : key ‑> 'a t ‑> 'a
  • Raises Not_found: if the key is not present.
val nth : int ‑> 'a t ‑> (key * 'a) option

nth i m returns the i-th key, value in the ascending -order. Complexity is O(log (cardinal m)).

val nth_exn : int ‑> 'a t ‑> key * 'a
  • Raises Not_found: if the index is invalid.
val get_rank : key ‑> 'a t ‑> [ `At of int | `After of int | `First ]

get_rank k m looks for the rank of k in m, i.e. the index -of k in the sorted list of bindings of m. -let (`At n) = get_rank k m in nth_exn n m = get m k should hold.

  • Since: 1.4
val add : key ‑> 'a ‑> 'a t ‑> 'a t
val remove : key ‑> 'a t ‑> 'a t
val update : key ‑> ('a option ‑> 'a option) ‑> 'a t ‑> 'a t

update k f m calls f (Some v) if get k m = Some v, f None -otherwise. Then, if f returns Some v' it binds k to v', -if f returns None it removes k.

val cardinal : _ t ‑> int
val weight : _ t ‑> int
val fold : f:('b ‑> key ‑> 'a ‑> 'b) ‑> x:'b ‑> 'a t ‑> 'b
val mapi : f:(key ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t

Map values, giving both key and value. Will use WORD.of_list to rebuild keys.

  • Since: 0.17
val map : f:('a ‑> 'b) ‑> 'a t ‑> 'b t

Map values, giving only the value.

  • Since: 0.17
val iter : f:(key ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val split : key ‑> 'a t ‑> 'a t * 'a option * 'a t

split k t returns l, o, r where l is the part of the map -with keys smaller than k, r has keys bigger than k, -and o = Some v if k, v belonged to the map.

val merge : f:(key ‑> 'a option ‑> 'b option ‑> 'c option) ‑> 'a t ‑> 'b t ‑> 'c t

Like Map.S.merge.

val extract_min : 'a t ‑> key * 'a * 'a t

extract_min m returns k, v, m' where k,v is the pair with the -smallest key in m, and m' does not contain k.

  • Raises Not_found: if the map is empty.
val extract_max : 'a t ‑> key * 'a * 'a t

extract_max m returns k, v, m' where k,v is the pair with the -highest key in m, and m' does not contain k.

  • Raises Not_found: if the map is empty.
val choose : 'a t ‑> (key * 'a) option
val choose_exn : 'a t ‑> key * 'a
  • Raises Not_found: if the tree is empty.
val random_choose : Random.State.t ‑> 'a t ‑> key * 'a

Randomly choose a (key,value) pair within the tree, using weights -as probability weights.

  • Raises Not_found: if the tree is empty.
val add_list : 'a t ‑> (key * 'a) list ‑> 'a t
val of_list : (key * 'a) list ‑> 'a t
val to_list : 'a t ‑> (key * 'a) list
val add_seq : 'a t ‑> (key * 'a) sequence ‑> 'a t
val of_seq : (key * 'a) sequence ‑> 'a t
val to_seq : 'a t ‑> (key * 'a) sequence
val add_gen : 'a t ‑> (key * 'a) gen ‑> 'a t
val of_gen : (key * 'a) gen ‑> 'a t
val to_gen : 'a t ‑> (key * 'a) gen
val pp : key printer ‑> 'a printer ‑> 'a t printer

Renamed from val print.

  • Since: 2.0
\ No newline at end of file diff --git a/dev/containers.data/CCWBTree/index.html b/dev/containers.data/CCWBTree/index.html deleted file mode 100644 index 361872d4..00000000 --- a/dev/containers.data/CCWBTree/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -CCWBTree (containers.data.CCWBTree)

Module CCWBTree

Weight-Balanced Tree

status: experimental

  • Since: 0.13
type 'a sequence = ('a ‑> unit) ‑> unit
type 'a gen = unit ‑> 'a option
type 'a printer = Format.formatter ‑> 'a ‑> unit
module type ORD : sig ... end
module type KEY : sig ... end

Signature

module type S : sig ... end

Functor

module Make : functor (X : ORD) -> S with type key = X.t
module MakeFull : functor (X : KEY) -> S with type key = X.t

Use the custom X.weight function

\ No newline at end of file diff --git a/dev/containers.data/CCWBTree/module-type-KEY/index.html b/dev/containers.data/CCWBTree/module-type-KEY/index.html deleted file mode 100644 index 3e1a6e17..00000000 --- a/dev/containers.data/CCWBTree/module-type-KEY/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -KEY (containers.data.CCWBTree.KEY)

Module type CCWBTree.KEY

include ORD
type t
val compare : t ‑> t ‑> int
val weight : t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCWBTree/module-type-ORD/index.html b/dev/containers.data/CCWBTree/module-type-ORD/index.html deleted file mode 100644 index 0d379fa4..00000000 --- a/dev/containers.data/CCWBTree/module-type-ORD/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -ORD (containers.data.CCWBTree.ORD)

Module type CCWBTree.ORD

type t
val compare : t ‑> t ‑> int
\ No newline at end of file diff --git a/dev/containers.data/CCWBTree/module-type-S/index.html b/dev/containers.data/CCWBTree/module-type-S/index.html deleted file mode 100644 index 4ab23089..00000000 --- a/dev/containers.data/CCWBTree/module-type-S/index.html +++ /dev/null @@ -1,12 +0,0 @@ - -S (containers.data.CCWBTree.S)

Module type CCWBTree.S

type key
type +'a t
val empty : 'a t
val is_empty : _ t ‑> bool
val singleton : key ‑> 'a ‑> 'a t
val mem : key ‑> _ t ‑> bool
val get : key ‑> 'a t ‑> 'a option
val get_exn : key ‑> 'a t ‑> 'a
  • Raises Not_found: if the key is not present.
val nth : int ‑> 'a t ‑> (key * 'a) option

nth i m returns the i-th key, value in the ascending -order. Complexity is O(log (cardinal m)).

val nth_exn : int ‑> 'a t ‑> key * 'a
  • Raises Not_found: if the index is invalid.
val get_rank : key ‑> 'a t ‑> [ `At of int | `After of int | `First ]

get_rank k m looks for the rank of k in m, i.e. the index -of k in the sorted list of bindings of m. -let (`At n) = get_rank k m in nth_exn n m = get m k should hold.

  • Since: 1.4
val add : key ‑> 'a ‑> 'a t ‑> 'a t
val remove : key ‑> 'a t ‑> 'a t
val update : key ‑> ('a option ‑> 'a option) ‑> 'a t ‑> 'a t

update k f m calls f (Some v) if get k m = Some v, f None -otherwise. Then, if f returns Some v' it binds k to v', -if f returns None it removes k.

val cardinal : _ t ‑> int
val weight : _ t ‑> int
val fold : f:('b ‑> key ‑> 'a ‑> 'b) ‑> x:'b ‑> 'a t ‑> 'b
val mapi : f:(key ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t

Map values, giving both key and value. Will use WORD.of_list to rebuild keys.

  • Since: 0.17
val map : f:('a ‑> 'b) ‑> 'a t ‑> 'b t

Map values, giving only the value.

  • Since: 0.17
val iter : f:(key ‑> 'a ‑> unit) ‑> 'a t ‑> unit
val split : key ‑> 'a t ‑> 'a t * 'a option * 'a t

split k t returns l, o, r where l is the part of the map -with keys smaller than k, r has keys bigger than k, -and o = Some v if k, v belonged to the map.

val merge : f:(key ‑> 'a option ‑> 'b option ‑> 'c option) ‑> 'a t ‑> 'b t ‑> 'c t

Like Map.S.merge.

val extract_min : 'a t ‑> key * 'a * 'a t

extract_min m returns k, v, m' where k,v is the pair with the -smallest key in m, and m' does not contain k.

  • Raises Not_found: if the map is empty.
val extract_max : 'a t ‑> key * 'a * 'a t

extract_max m returns k, v, m' where k,v is the pair with the -highest key in m, and m' does not contain k.

  • Raises Not_found: if the map is empty.
val choose : 'a t ‑> (key * 'a) option
val choose_exn : 'a t ‑> key * 'a
  • Raises Not_found: if the tree is empty.
val random_choose : Random.State.t ‑> 'a t ‑> key * 'a

Randomly choose a (key,value) pair within the tree, using weights -as probability weights.

  • Raises Not_found: if the tree is empty.
val add_list : 'a t ‑> (key * 'a) list ‑> 'a t
val of_list : (key * 'a) list ‑> 'a t
val to_list : 'a t ‑> (key * 'a) list
val add_seq : 'a t ‑> (key * 'a) sequence ‑> 'a t
val of_seq : (key * 'a) sequence ‑> 'a t
val to_seq : 'a t ‑> (key * 'a) sequence
val add_gen : 'a t ‑> (key * 'a) gen ‑> 'a t
val of_gen : (key * 'a) gen ‑> 'a t
val to_gen : 'a t ‑> (key * 'a) gen
val pp : key printer ‑> 'a printer ‑> 'a t printer

Renamed from val print.

  • Since: 2.0
\ No newline at end of file diff --git a/dev/containers.data/CCZipper.odoc b/dev/containers.data/CCZipper.odoc deleted file mode 100644 index 43807399aaa540473a6da72b40ae4b5195c9b886..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2884 zcmbVOONd)l7*0Z>%?LggmV&P{Z6-}JnPmEyI<&UEb!y8%r>Gs3)?zr5dopvJn|s2! zH%U_zMReE2oepgUL5`(kT}T~7sVnV9TolEXAP7pa;6ms^v|GBT&nGTMNz|B49 z{NMNekMCSziu%a5%J$0W+vh&~GLcA(z%K*8jqrPDxmp*tOS#RYQ!%MaKPXI0oZzh% zlg8+>J^k15Kc@Gkzmw+e8?~$-VBlsVk$OFmxcBEo;-1?Z5{XCFvMZ#zWTa9~gx#x=kgq=sR5i|Uf+ozGz~{R;o4v%#vN&MkkOo*rV&mfJ&K zBhTOyIjxIYF$~zelzt_>+dqn%S%EvXX#cMM{rk!D%xz2CK~b)3Gv)0iywT7E-LBAz z96}`{IsnA~6cN&!ltwzAn-RkDIlZyf6*VM{tg>4sgxz7%)scL1WQNw~i7N=zVJib_ zVI(+03RYPbm6szNsjQyB!3cd^i$fkS#WF7rLoiHw$YJlA6x5{y$}7Nr7!76`%6l?k zHE9z8#gqh^#&pU+=fAR)!~!}I%X-A}t(fJvxh9=wIz_uDB%>~abOiZn3783P&l2jV zt-&Sq6SG(oI*bUvDyS}kSd1Xvj3Iu_S*+n#;qYOB3D>;|@5)3-VhUn|K*ZsG$N(Nv zPc5Ki_K*O^XbQk@2`9o^i104Ncz+jgZ;hR@QP%dAkcPTEI%#*P#myR(vu%_EEmB-J z{FMm)vj{$u+%zQl?3^!nGDg=g*P~b;SRwiA2=jU$X0@nyhoX0^0(%$LrL|PAPT@vG z;kP~tNAgW!@`g5n?9`Ng)|IZerNo8_8mEk9rgjhPrw4|Gwgl2bU4c|uJSU1jhT2qNUw zHZ=7NYX~qk4kJOqp#8I<8^b<-iouWr`g>yfU>o4mXv3N0QeLvA=-@mrfS2GSLS}~` z(fG%|7DD!S6eOIgO!9>|`pbRMzbb)o2eNd6#wPuM!N3Mfc!xM}*M-^GPp0Q!fH`o?A|D)c867w$NP` zg5N0$;_VFAfG62Ybo83?hVW*A>TJ_j37Q@(HmK!5qeZTnNxmBD6s?-yDq4T(AiN-W zW%R;iWAf2nH=_q`CWSh+;LB##PkJUfp)VHLVEeU*&9@kr|NBsJCiz33 -CCZipper (containers.data.CCZipper)

Module CCZipper

List Zipper

  • Since: 1.0
type 'a t = 'a list * 'a list

The pair l, r represents the list List.rev_append l r, but -with the focus on r

val empty : 'a t

Empty zipper.

val is_empty : _ t ‑> bool

Empty zipper? Returns true iff the two lists are empty.

val to_list : 'a t ‑> 'a list

Convert the zipper back to a list. -to_list (l,r) is List.rev_append l r.

val to_rev_list : 'a t ‑> 'a list

Convert the zipper back to a reversed list. -In other words, to_list (l,r) is List.rev_append r l.

val make : 'a list ‑> 'a t

Create a zipper pointing at the first element of the list.

val left : 'a t ‑> 'a t

Go to the left, or do nothing if the zipper is already at leftmost pos.

val left_exn : 'a t ‑> 'a t

Go to the left, or

  • Raises Invalid_argument: if the zipper is already at leftmost pos.
val right : 'a t ‑> 'a t

Go to the right, or do nothing if the zipper is already at rightmost pos.

val right_exn : 'a t ‑> 'a t

Go to the right, or

  • Raises Invalid_argument: if the zipper is already at rightmost pos.
val modify : ('a option ‑> 'a option) ‑> 'a t ‑> 'a t

Modify the current element, if any, by returning a new element, or -returning None if the element is to be deleted.

val insert : 'a ‑> 'a t ‑> 'a t

Insert an element at the current position. If an element was focused, -insert x l adds x just before it, and focuses on x.

val remove : 'a t ‑> 'a t

remove l removes the current element, if any.

val is_focused : _ t ‑> bool

Is the zipper focused on some element? That is, will focused -return a Some v?

val focused : 'a t ‑> 'a option

Return the focused element, if any. focused zip = Some _ iff -empty zip = false.

val focused_exn : 'a t ‑> 'a

Return the focused element, or

  • Raises Not_found: if the zipper is at an end.
val drop_before : 'a t ‑> 'a t

Drop every element on the "left" (calling left then will do nothing).

val drop_after : 'a t ‑> 'a t

Drop every element on the "right" (calling right then will do nothing), -keeping the focused element, if any.

val drop_after_and_focused : 'a t ‑> 'a t

Drop every element on the "right" (calling right then will do nothing), -including the focused element if it is present.

\ No newline at end of file diff --git a/dev/containers.data/index-generated.mld b/dev/containers.data/index-generated.mld deleted file mode 100644 index 75a16ac6..00000000 --- a/dev/containers.data/index-generated.mld +++ /dev/null @@ -1,2 +0,0 @@ -{1 Library containers.data} -This library exposes the following toplevel modules: {!modules:CCBV CCBijection CCBitField CCCache CCDeque CCFQueue CCFun_vec CCGraph CCHashSet CCHashTrie CCHet CCImmutArray CCIntMap CCMixmap CCMixset CCMixtbl CCMultiMap CCMultiSet CCPersistentArray CCPersistentHashtbl CCRAL CCRingBuffer CCSimple_queue CCTrie CCWBTree CCZipper}. \ No newline at end of file diff --git a/dev/containers.data/index.html b/dev/containers.data/index.html deleted file mode 100644 index 60be1167..00000000 --- a/dev/containers.data/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -index (containers.data.index)

Library containers.data

-This library exposes the following toplevel modules:

CCBV
CCBijection
CCBitField
CCCache
CCDeque
CCFQueue
CCFun_vec
CCGraph
CCHashSet
CCHashTrie
CCHet
CCImmutArray
CCIntMap
CCMixmap
CCMixset
CCMixtbl
CCMultiMap
CCMultiSet
CCPersistentArray
CCPersistentHashtbl
CCRAL
CCRingBuffer
CCSimple_queue
CCTrie
CCWBTree
CCZipper

.

\ No newline at end of file diff --git a/dev/containers.data/page-index.odoc b/dev/containers.data/page-index.odoc deleted file mode 100644 index e4a4b413aff3bc64dcb81c29de39d9bda83e3a44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 635 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 diff --git a/dev/containers.iter/CCKList/Infix/index.html b/dev/containers.iter/CCKList/Infix/index.html deleted file mode 100644 index 45dfb5e1..00000000 --- a/dev/containers.iter/CCKList/Infix/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Infix (containers.iter.CCKList.Infix)

Module CCKList.Infix

val (>>=) : 'a t ‑> ('a ‑> 'b t) ‑> 'b t
val (>|=) : 'a t ‑> ('a ‑> 'b) ‑> 'b t
val (<*>) : ('a ‑> 'b) t ‑> 'a t ‑> 'b t
val (>>-) : 'a t ‑> ('a ‑> 'b t) ‑> 'b t
val (<.>) : ('a ‑> 'b) t ‑> 'a t ‑> 'b t
val (--) : int ‑> int ‑> int t
val (--^) : int ‑> int ‑> int t
\ No newline at end of file diff --git a/dev/containers.iter/CCKList/Traverse/argument-1-M/index.html b/dev/containers.iter/CCKList/Traverse/argument-1-M/index.html deleted file mode 100644 index 791fe65e..00000000 --- a/dev/containers.iter/CCKList/Traverse/argument-1-M/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-M (containers.iter.CCKList.Traverse.1-M)

Parameter CCKList.Traverse.1-M

type 'a t
val return : 'a ‑> 'a t
val (>>=) : 'a t ‑> ('a ‑> 'b t) ‑> 'b t
\ No newline at end of file diff --git a/dev/containers.iter/CCKList/Traverse/index.html b/dev/containers.iter/CCKList/Traverse/index.html deleted file mode 100644 index e466f737..00000000 --- a/dev/containers.iter/CCKList/Traverse/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Traverse (containers.iter.CCKList.Traverse)

Module CCKList.Traverse

Parameters

Signature

val sequence_m : 'a M.t t ‑> 'a t M.t
val fold_m : ('b ‑> 'a ‑> 'b M.t) ‑> 'b ‑> 'a t ‑> 'b M.t
val map_m : ('a ‑> 'b M.t) ‑> 'a t ‑> 'b t M.t
\ No newline at end of file diff --git a/dev/containers.iter/CCKList/index.html b/dev/containers.iter/CCKList/index.html deleted file mode 100644 index fde7e0a6..00000000 --- a/dev/containers.iter/CCKList/index.html +++ /dev/null @@ -1,16 +0,0 @@ - -CCKList (containers.iter.CCKList)

Module CCKList

Continuation List

type 'a sequence = ('a ‑> unit) ‑> unit
type 'a gen = unit ‑> 'a option
type 'a equal = 'a ‑> 'a ‑> bool
type 'a ord = 'a ‑> 'a ‑> int
type 'a printer = Format.formatter ‑> 'a ‑> unit

Basics

type +'a t = unit ‑> [ `Nil | `Cons of 'a * 'a t ]
val nil : 'a t
val empty : 'a t
val cons : 'a ‑> 'a t ‑> 'a t
val singleton : 'a ‑> 'a t
val repeat : ?⁠n:int ‑> 'a ‑> 'a t

repeat ~n x repeats xn times then stops. If n is omitted, -then x is repeated forever.

  • Since: 0.3.3
val cycle : 'a t ‑> 'a t

Cycle through the iterator infinitely. The iterator shouldn't be empty.

  • Since: 0.3.3
val unfold : ('b ‑> ('a * 'b) option) ‑> 'b ‑> 'a t

unfold f acc calls f acc and: -

  • if f acc = Some (x, acc'), yield x, continue with unfold f acc'.
  • if f acc = None, stops.
  • Since: 0.13
val is_empty : 'a t ‑> bool
val head : 'a t ‑> 'a option

Head of the list.

  • Since: 0.13
val head_exn : 'a t ‑> 'a

Unsafe version of head.

  • Raises Not_found: if the list is empty.
  • Since: 0.13
val tail : 'a t ‑> 'a t option

Tail of the list.

  • Since: 0.13
val tail_exn : 'a t ‑> 'a t

Unsafe version of tail.

  • Raises Not_found: if the list is empty.
  • Since: 0.13
val equal : 'a equal ‑> 'a t equal

Equality step by step. Eager.

val compare : 'a ord ‑> 'a t ord

Lexicographic comparison. Eager.

val fold : ('a ‑> 'b ‑> 'a) ‑> 'a ‑> 'b t ‑> 'a

Fold on values.

val iter : ('a ‑> unit) ‑> 'a t ‑> unit
val iteri : (int ‑> 'a ‑> unit) ‑> 'a t ‑> unit

Iterate with index (starts at 0).

  • Since: 0.13
val length : _ t ‑> int

Number of elements in the list. -Will not terminate if the list if infinite: -use (for instance) take to make the list finite if necessary.

val take : int ‑> 'a t ‑> 'a t
val take_while : ('a ‑> bool) ‑> 'a t ‑> 'a t
val drop : int ‑> 'a t ‑> 'a t
val drop_while : ('a ‑> bool) ‑> 'a t ‑> 'a t
val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t
val mapi : (int ‑> 'a ‑> 'b) ‑> 'a t ‑> 'b t

Map with index (starts at 0).

  • Since: 0.13
val fmap : ('a ‑> 'b option) ‑> 'a t ‑> 'b t
val filter : ('a ‑> bool) ‑> 'a t ‑> 'a t
val append : 'a t ‑> 'a t ‑> 'a t
val product_with : ('a ‑> 'b ‑> 'c) ‑> 'a t ‑> 'b t ‑> 'c t

Fair product of two (possibly infinite) lists into a new list. Lazy. -The first parameter is used to combine each pair of elements.

  • Since: 0.3.3
val product : 'a t ‑> 'b t ‑> ('a * 'b) t

Specialization of product_with producing tuples.

  • Since: 0.3.3
val group : 'a equal ‑> 'a t ‑> 'a t t

group eq l groups together consecutive elements that satisfy eq. Lazy. -For instance group (=) [1;1;1;2;2;3;3;1] yields -[1;1;1]; [2;2]; [3;3]; [1].

  • Since: 0.3.3
val uniq : 'a equal ‑> 'a t ‑> 'a t

uniq eq l returns l but removes consecutive duplicates. Lazy. -In other words, if several values that are equal follow one another, -only the first of them is kept.

  • Since: 0.3.3
val flat_map : ('a ‑> 'b t) ‑> 'a t ‑> 'b t
val filter_map : ('a ‑> 'b option) ‑> 'a t ‑> 'b t
val flatten : 'a t t ‑> 'a t
val range : int ‑> int ‑> int t
val (--) : int ‑> int ‑> int t

a -- b is the range of integers containing -a and b (therefore, never empty).

val (--^) : int ‑> int ‑> int t

a -- b is the integer range from a to b, where b is excluded.

  • Since: 0.17

Operations on two Collections

val fold2 : ('acc ‑> 'a ‑> 'b ‑> 'acc) ‑> 'acc ‑> 'a t ‑> 'b t ‑> 'acc

Fold on two collections at once. Stop at soon as one of them ends.

val map2 : ('a ‑> 'b ‑> 'c) ‑> 'a t ‑> 'b t ‑> 'c t

Map on two collections at once. Stop as soon as one of the -arguments is exhausted.

val iter2 : ('a ‑> 'b ‑> unit) ‑> 'a t ‑> 'b t ‑> unit

Iterate on two collections at once. Stop as soon as one of them ends.

val for_all2 : ('a ‑> 'b ‑> bool) ‑> 'a t ‑> 'b t ‑> bool
val exists2 : ('a ‑> 'b ‑> bool) ‑> 'a t ‑> 'b t ‑> bool
val merge : 'a ord ‑> 'a t ‑> 'a t ‑> 'a t

Merge two sorted iterators into a sorted iterator.

val zip : 'a t ‑> 'b t ‑> ('a * 'b) t

Combine elements pairwise. Stop as soon as one of the lists stops.

  • Since: 0.13
val unzip : ('a * 'b) t ‑> 'a t * 'b t

Split each tuple in the list.

  • Since: 0.13

Misc

val sort : cmp:'a ord ‑> 'a t ‑> 'a t

Eager sort. Require the iterator to be finite. O(n ln(n)) time -and space.

  • Since: 0.3.3
val sort_uniq : cmp:'a ord ‑> 'a t ‑> 'a t

Eager sort that removes duplicate values. Require the iterator to be -finite. O(n ln(n)) time and space.

  • Since: 0.3.3
val memoize : 'a t ‑> 'a t

Avoid recomputations by caching intermediate results.

  • Since: 0.14

Fair Combinations

val interleave : 'a t ‑> 'a t ‑> 'a t

Fair interleaving of both streams.

  • Since: 0.13
val fair_flat_map : ('a ‑> 'b t) ‑> 'a t ‑> 'b t

Fair version of flat_map.

  • Since: 0.13
val fair_app : ('a ‑> 'b) t ‑> 'a t ‑> 'b t

Fair version of (<*>).

  • Since: 0.13

Implementations

  • Since: 0.3.3
val return : 'a ‑> 'a t
val pure : 'a ‑> 'a t
val (>>=) : 'a t ‑> ('a ‑> 'b t) ‑> 'b t
val (>|=) : 'a t ‑> ('a ‑> 'b) ‑> 'b t
val (<*>) : ('a ‑> 'b) t ‑> 'a t ‑> 'b t
val (>>-) : 'a t ‑> ('a ‑> 'b t) ‑> 'b t

Infix version of fair_flat_map.

  • Since: 0.13
val (<.>) : ('a ‑> 'b) t ‑> 'a t ‑> 'b t

Infix version of fair_app.

  • Since: 0.13

Infix operators

  • Since: 0.17
module Infix : sig ... end
module type MONAD : sig ... end

Monadic Operations

module Traverse : functor (M : MONAD) -> sig ... end

Conversions

val of_list : 'a list ‑> 'a t
val to_list : 'a t ‑> 'a list

Gather all values into a list.

val of_array : 'a array ‑> 'a t

Iterate on the array.

  • Since: 0.13
val to_array : 'a t ‑> 'a array

Convert into array. Iterate twice.

  • Since: 0.13
val to_rev_list : 'a t ‑> 'a list

Convert to a list, in reverse order. More efficient than to_list.

val to_seq : 'a t ‑> 'a sequence
val to_gen : 'a t ‑> 'a gen
val of_gen : 'a gen ‑> 'a t

of_gen g consumes the generator and caches intermediate results.

  • Since: 0.13

IO

val pp : ?⁠sep:string ‑> 'a printer ‑> 'a t printer

Print the list with the given separator (default ","). -Do not print opening/closing delimiters.

\ No newline at end of file diff --git a/dev/containers.iter/CCKList/module-type-MONAD/index.html b/dev/containers.iter/CCKList/module-type-MONAD/index.html deleted file mode 100644 index 700bb5df..00000000 --- a/dev/containers.iter/CCKList/module-type-MONAD/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -MONAD (containers.iter.CCKList.MONAD)

Module type CCKList.MONAD

Monadic Operations

type 'a t
val return : 'a ‑> 'a t
val (>>=) : 'a t ‑> ('a ‑> 'b t) ‑> 'b t
\ No newline at end of file diff --git a/dev/containers.iter/CCKTree.odoc b/dev/containers.iter/CCKTree.odoc deleted file mode 100644 index ab1295fecd0505c11356d044cbfad058c319ca43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4648 zcmb7HeQXPw76J3Xx&=3p(5@Kkp#41%tO#Ghb zJ%6+kOiPs9`F)@7kKgmyExV=R(fnAx@c4;yKTjkQL-^D2cRT(zo*yZ>PGDM&^!&UP zNbmIEVs^z}h|_KADGby~NkpL>79y5hg>wM0U@oJidILL#xj{A41LPDCF^ zik1qa=;hr;6mFX_kFE&PCFTOJQ3@KK#BsOVGhelQ;Wy7j$#g_fiiR)CB5;K#>z?$b z6Nmu3zA&A#C|jN^1+v_;=$ZAZFS4dDET>{Q@JW&7@L8C`CY=@2uUf8?7cV9THa10}ITS4W=!EmAcFuhW42#8rajQRHPRco;@|b^UAK}>0dqi`qk;_ zcXLs+W74eImV-b#rakR?H8a>_`c}yg3o9>v|JIl1)|aO4d1wBiSD(HGauh*WxO3Co z57N^o9=JNV?}54BzIic#fD{HSG!Q?pRV&`|4obKESJYh={NYs+~S0z*X zY%K5>{WY@=%f1_14!@Mu*PB*rAF{K`)3-C(`;P6(fgxftJ$Vb$wYk~PO&u&BpHnFw^fh?*V=j6?V4E%c< zMXO+`cgA&>1gwMs%??NPqwLXlKDBAIIxvSq7YmSbQzl+x^&Oa!I>V||Zc^iXO}R;} z^La-HjLgE>U}c!cCrZemV(uQ_d&H!Oh%Cb$O#;)l(POaBG0}r!+A6w^St?ng(r`*N z+jIB!M8|s)iR2rCe-KYmTUw}CMd65DJ?c;ZX97gEgmx_s3R`%>>bMkyveqt#`rg5v zw0+DcqVz=8-s@5Dq;e9@tUbR&d8sfsrmMJ?WAq9BfeZ}>jZ zT%%e8R%9QUL>D-1O~=GSCne3eF;LCg4Q!%KH*>I${LMPUqaE*Kx!jGm)$0o+KvZf0 ztZN3a!!o6v6i)N%lCN-nD$LQBDfbDdlbWq?{x5mkfLLNIurFg8`96_thM-;-v30R8 zJ79aI#*D-2w}Gt8Ort8WcM*H!P3P=I)~&)Ye{fkD$?brFSq`TY#SL*-Oh1 zZy=!bBu`tc8X%J83E^Y;C5bd?7abR8)O7uY{7%(#YkJoXJ@unzWow_HokUOBe9*bs zbq}cuhrt++ERxGhOx-^(vWtZOhpnSIDs7Yrp?Y}rjNUcZKjj9Y-gU?7DsQXZIWq`6 ztJny59Phv_W>S0-HwIFQ0dfg&t^jb-wOs%p3_Cdh?4a%f5@zPAW*xwQW38JG2EM|h znosoP6-5)Q*fGr}KA54^PBGn02Yvg?>QjcV??=Nx)srk0ks{$^1U0y&oqjgMo-)u+ z?G|NN&j%D=tbt}t4v9L|a(nlq&iBA)XWPN(-FQisa{aHQUrN^4) zXf!J6hcHj`GH4b{Vcx)lTr_4JdrS+Oa0t_o;BP7fh5M%n>x}2muIgQDgyKljc1m)D zqxf4|F9r)~?pjrj_aXyo<cPPTRaG+i^7B+Pjo z!#GW`rEILJy4Ab(DqAPj;~+gWo(deUH?_x9px)|O_w}y#Iz|1uDe4g=hT?VXs4Pf(vzQRws~fjdWO2z<#yp3z{JA# zX%gfQ2^o~AFEfSwcz#p~-^St&sC?^5p+?I>;9?ZmJdAg6D>hGn;I^bFiNz?)sy5}( zjE@sov!NRm0vfSgbukWzl)k!0tH4^tiF)X;LQTD7pNf*^uvyvxwRI%-4R%;E9>2G3 z;Ht+2EMRCXq5jRdPh2dc@&3#tL&B{~U>toVVB>Bur#sDi1pCP}&2A%aXs0C>n0$`Q zBMQgZ|5!dZW~V>lYO{*;9Ver#C~_K4%#J1w$m< AeE -Dot (containers.iter.CCKTree.Dot)

Module CCKTree.Dot

type attribute = [
| `Color of string
| `Shape of string
| `Weight of int
| `Style of string
| `Label of string
| `Id of string
| `Other of string * string
]

Dot attributes for nodes

type graph = string * attribute list t list

A dot graph is a name, plus a list of trees labelled with attributes

val mk_id : ('a, Buffer.t, unit, attribute) Pervasives.format4 ‑> 'a

Using a formatter string, build an ID.

val mk_label : ('a, Buffer.t, unit, attribute) Pervasives.format4 ‑> 'a

Using a formatter string, build a label.

val make : name:string ‑> attribute list t list ‑> graph
val singleton : name:string ‑> attribute list t ‑> graph
val pp_single : string ‑> attribute list t printer
val pp : graph printer

Printer to DOT with indentation, etc.

  • Since: 0.6.1
val print_to_file : string ‑> graph ‑> unit

print_to_file filename g prints g into a file whose name -is filename.

  • Since: 0.6.1
val to_file : ?⁠name:string ‑> string ‑> attribute list t list ‑> unit

to_file filename trees makes a graph out of the trees, opens the -file filename and prints the graph into the file.

  • Parameter name: name of the graph.
  • Since: 0.6.1
\ No newline at end of file diff --git a/dev/containers.iter/CCKTree/class-type-pset/index.html b/dev/containers.iter/CCKTree/class-type-pset/index.html deleted file mode 100644 index 63f80230..00000000 --- a/dev/containers.iter/CCKTree/class-type-pset/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -pset (containers.iter.CCKTree.pset)

Class type CCKTree.pset

Abstract Set structure

method add : 'a ‑> 'a pset
method mem : 'a ‑> bool
\ No newline at end of file diff --git a/dev/containers.iter/CCKTree/index.html b/dev/containers.iter/CCKTree/index.html deleted file mode 100644 index ce81dc33..00000000 --- a/dev/containers.iter/CCKTree/index.html +++ /dev/null @@ -1,22 +0,0 @@ - -CCKTree (containers.iter.CCKTree)

Module CCKTree

Lazy Tree Structure

-This structure can be used to represent trees and directed -graphs (as infinite trees) in a lazy fashion. Like CCKList, it -is a structural type.

type 'a sequence = ('a ‑> unit) ‑> unit
type 'a gen = unit ‑> 'a option
type 'a klist = unit ‑> [ `Nil | `Cons of 'a * 'a klist ]
type 'a printer = Format.formatter ‑> 'a ‑> unit

Basics

type +'a t = unit ‑> [ `Nil | `Node of 'a * 'a t list ]
val empty : 'a t
val is_empty : _ t ‑> bool
val singleton : 'a ‑> 'a t

Tree with only one label.

val node : 'a ‑> 'a t list ‑> 'a t

Build a node from a label and a list of children.

val node1 : 'a ‑> 'a t ‑> 'a t

Node with one child.

val node2 : 'a ‑> 'a t ‑> 'a t ‑> 'a t

Node with two children.

val fold : ('a ‑> 'b ‑> 'a) ‑> 'a ‑> 'b t ‑> 'a

Fold on values in no specified order. May not terminate if the -tree is infinite.

val iter : ('a ‑> unit) ‑> 'a t ‑> unit
val size : _ t ‑> int

Number of elements.

val height : _ t ‑> int

Length of the longest path to empty leaves.

val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t
val (>|=) : 'a t ‑> ('a ‑> 'b) ‑> 'b t
val cut_depth : int ‑> 'a t ‑> 'a t

Cut the tree at the given depth, so it becomes finite.

Graph Traversals

class type 'a pset = object ... end

Abstract Set structure

val set_of_cmp : cmp:('a ‑> 'a ‑> int) ‑> unit ‑> 'a pset

Build a set structure given a total ordering.

val dfs : pset:'a pset ‑> 'a t ‑> [ `Enter of 'a | `Exit of 'a ] klist

Depth-first traversal of the tree.

val bfs : pset:'a pset ‑> 'a t ‑> 'a klist

Breadth-first traversal of the tree.

val force : 'a t ‑> [ `Nil | `Node of 'a * 'b list ] as b

force t evaluates t completely and returns a regular tree -structure.

  • Since: 0.13
val find : pset:'a pset ‑> ('a ‑> 'b option) ‑> 'a t ‑> 'b option

Look for an element that maps to Some _.

Pretty-printing

Example (tree of calls for naive Fibonacci function): -

      let mk_fib n =
-        let rec fib' l r i =
-          if i=n then r else fib' r (l+r) (i+1)
-        in fib' 1 1 1;;
-
-      let rec fib n = match n with
-        | 0 | 1 -> CCKTree.singleton (`Cst n)
-        | _ -> CCKTree.node2 (`Plus (mk_fib n)) (fib (n-1)) (fib (n-2));;
-
-      let pp_node fmt = function
-        | `Cst n -> Format.fprintf fmt "%d" n
-        | `Plus n -> Format.fprintf fmt "%d" n;;
-
-      Format.printf "%a@." (CCKTree.pp pp_node) (fib 8);;
val pp : 'a printer ‑> 'a t printer

A pretty-printer using S-expressions and boxes to render the tree. -Empty nodes are not rendered; sharing is ignored.

  • Since: 0.9

Pretty printing in the DOT (graphviz) format

module Dot : sig ... end
\ No newline at end of file diff --git a/dev/containers.iter/CCLazy_list.odoc b/dev/containers.iter/CCLazy_list.odoc deleted file mode 100644 index 98259e2c87b502f0046252766ccb78977bb08d1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2010 zcmb7EO>7%Q6t=Bd+CV83B%~6dPVmNYh+{h`Bt~kI4Q?udLO~EpC5o)EJ&sq|-7&lC zv?)Cx#NVM3la!<+J#-0_Ab}uig(_5mqE-SfoO%ExkhpL|0uEg0h4*IHKY|kn%Wr1C z_r33ZZ)QYQRE9^gquKmxs~>(9i^cNr)8Ka>{Pu02TM}nm%{m8!8rO+3BT{ zWqQ7mzw5TArr!Vh(a-Np)vv6+a(yJ^*mWuvOI(Y^cCEti;OEY>rEb9z2IGH#GNf}l`jwq-gX%3;}Lyy5BxHB z?3?ode&}iLF2dJE4xcZO-+ns(>)n|L9!{_Pe)`8vLv9y5x01sKb6x#qfxjo0s|%aw zJku6V?xb)RyaucAE?;t`a?`Y`xhk)*rse1NkNvqaeq$>WPn`YXyPHqUOdB#-*||jY zK3@igu@eNck4eKYsq>NUC-Dvu}N*9^cw4Y1(D(Qc1DkD3k*mirJ| z$WYGaxoa)aG#m}iTZ+JT1qsqpWqzs;JC@U`Ua-~M|dk~vj)};FApq`L(0CIk}Uhm zq3SCwLh=PfWtFVOds8*j0)LPodqjod)V*wU0}EYbSbPIc1O9*C=KEPiC`OA<={{TF z$Tl_y0cAe51@!0qmsPQ>Mr?nz*=}{Qy_jN+26vRL2i4mE)2P58VVGb^%PcLvMP}~GUIz<0%9dxP1^T1FJMQZW!4)cWC51YO? z5IqRkcfME`W`$GH;4brpi#{etvmL;hMHg2G>&1;3EmscMO1aS_@OJMZAjVx>~64TNUDirp5mb)_1f7=ueR4cYtYA zOXP_iOa~j1G?bl*0_Wdj;ENWT vg+3?n>@d_pdb^PC4n@e4%NK#$kI=<7I@^W*I0fiX@|zLxSR449iVWi)z8wc# diff --git a/dev/containers.iter/CCLazy_list/Infix/index.html b/dev/containers.iter/CCLazy_list/Infix/index.html deleted file mode 100644 index 5e7f4174..00000000 --- a/dev/containers.iter/CCLazy_list/Infix/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Infix (containers.iter.CCLazy_list.Infix)

Module CCLazy_list.Infix

val (>|=) : 'a t ‑> ('a ‑> 'b) ‑> 'b t
val (>>=) : 'a t ‑> ('a ‑> 'b t) ‑> 'b t
val (<|>) : 'a t ‑> 'a t ‑> 'a t

Alias to default.

  • Since: 2.1
\ No newline at end of file diff --git a/dev/containers.iter/CCLazy_list/index.html b/dev/containers.iter/CCLazy_list/index.html deleted file mode 100644 index 019539e5..00000000 --- a/dev/containers.iter/CCLazy_list/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -CCLazy_list (containers.iter.CCLazy_list)

Module CCLazy_list

Lazy List

  • Since: 0.17
type +'a t = 'a node lazy_t
type +'a node =
| Nil
| Cons of 'a * 'a t
val empty : 'a t

Empty list.

val return : 'a ‑> 'a t

Return a computed value.

val is_empty : _ t ‑> bool

Evaluate the head.

val length : _ t ‑> int

length l returns the number of elements in l, eagerly (linear time). -Caution, will not terminate if l is infinite.

val cons : 'a ‑> 'a t ‑> 'a t
val head : 'a t ‑> ('a * 'a t) option

Evaluate head, return it, or None if the list is empty.

val map : f:('a ‑> 'b) ‑> 'a t ‑> 'b t

Lazy map.

val filter : f:('a ‑> bool) ‑> 'a t ‑> 'a t

Filter values.

  • Since: 0.18
val take : int ‑> 'a t ‑> 'a t

Take at most n values.

  • Since: 0.18
val append : 'a t ‑> 'a t ‑> 'a t

Lazy concatenation.

val flat_map : f:('a ‑> 'b t) ‑> 'a t ‑> 'b t

Monadic flatten + map.

val default : default:'a t ‑> 'a t ‑> 'a t

Choice operator.

  • Since: 2.1
module Infix : sig ... end
include module type of Infix
val (>|=) : 'a t ‑> ('a ‑> 'b) ‑> 'b t
val (>>=) : 'a t ‑> ('a ‑> 'b t) ‑> 'b t
val (<|>) : 'a t ‑> 'a t ‑> 'a t

Alias to default.

  • Since: 2.1
type 'a gen = unit ‑> 'a option
val of_gen : 'a gen ‑> 'a t
val of_list : 'a list ‑> 'a t
val to_list : 'a t ‑> 'a list
val to_list_rev : 'a t ‑> 'a list
val to_gen : 'a t ‑> 'a gen
\ No newline at end of file diff --git a/dev/containers.iter/index-generated.mld b/dev/containers.iter/index-generated.mld deleted file mode 100644 index c0b636e2..00000000 --- a/dev/containers.iter/index-generated.mld +++ /dev/null @@ -1,2 +0,0 @@ -{1 Library containers.iter} -This library exposes the following toplevel modules: {!modules:CCKList CCKTree CCLazy_list}. \ No newline at end of file diff --git a/dev/containers.iter/index.html b/dev/containers.iter/index.html deleted file mode 100644 index 408b61d4..00000000 --- a/dev/containers.iter/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -index (containers.iter.index)

Library containers.iter

-This library exposes the following toplevel modules:

CCKList
CCKTree
CCLazy_list

.

\ No newline at end of file diff --git a/dev/containers.iter/page-index.odoc b/dev/containers.iter/page-index.odoc deleted file mode 100644 index 9e8e2cae712e7cd8e6dce6b0bd6927c1c486f391..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmc~#$xqfb)HBjEXqmcf9|Hq}CJ?g%u?P_JZ_rQ9&nrpH%u6jQ*2^qOEt;U3nU|7U zVQ_VN+9m&<3C*b{wXOXJSSLd@?+0p92I49p&e*V!XzeUa6BaDk?&z>!g1Jv-Qc+@2 zr2?A8Kq*c$u8@q(Vuc*2iqwjN{NmJNg_4X^g|z&foc!|4ymW<<{DPd+veX=f-29Z% zoYZ0~g$1*KhA&iicJ}tkEG_|B0^x)drKW;8+Rn~CiB*;HIbd0!MT&Y34lJ?&A)l3*wpMv5%Q*;#kmnK|oRymTSx z@@6n(tB??5RM5rRdPoS0paU@#fptv>5o#ae?z32Xwsn5{?UV-iAwpO|IuH#U#%yZRk(KB%0tI!-6S= zPdSEctH`i;Xe4=*RZM6j)8bPm()m8c9EX-Vu2_;JffCPaibGvf4O=k{sC6Mzhju## zvgJmn9!+mu>VKT+*tc?GV0mtf=hYNmccb&*+o!qD+iLe76t4X^^Wm1{=1VIqQx?}G zBd!Z3f_Ewv#Wd0t(NZxJCy<%3vQSpULb76F#8I`Rm{d~G(d=lxyyxDP-y<^%_ZMF* z@;_H%lIz`YT~G36LinI0FPDD^szX9cHGU>Nm2SK4YzTi5{RuXc2jLNfG)mjTLUU`i z3w99-b~0D)JFuOazL3z2Nfjmg8L1&8ObHALew8Ll8W}lCNCPD%-U)XFx~VzFOb;<# z)LaS+t-cwg<`gr-#GIt&dX4K}2Of%vVG9!^#y`^@1sg86TDRpw~?Lj8rr6Fkh7l%atE-bV}{LINY)YDqCl_?*w z!X$g}fch_$IQOC#z;0&ukS1PH`v)giOluj968fIdV4w^qSZrg=b`txQ*(%&aanoRc z;X#7`GTdB=kEXbChGFF6U|`3(*w`p`Kx0%fkz?__tMkWV3kHU8Zse|dIXt|LeVPI- zg?I3Z$2-Rys712rDLjEt<8kJNiHrEJ@v33j3QR^MDTkAP(iX>qt|k>T;aI9MnqVao ot0iLeuz~?CEL6~4{i&%Zd$+9Fd&od`Q3J#OcYsT5paV(z2Of$O=l}o! diff --git a/dev/containers.monomorphic/CCMonomorphic/index.html b/dev/containers.monomorphic/CCMonomorphic/index.html deleted file mode 100644 index 619da61c..00000000 --- a/dev/containers.monomorphic/CCMonomorphic/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -CCMonomorphic (containers.monomorphic.CCMonomorphic)

Module CCMonomorphic

Shadow unsafe functions and operators from Pervasives

  • Since: 2.0
val (=) : int ‑> int ‑> bool
val (<>) : int ‑> int ‑> bool
val (<) : int ‑> int ‑> bool
val (>) : int ‑> int ‑> bool
val (<=) : int ‑> int ‑> bool
val (>=) : int ‑> int ‑> bool
val compare : int ‑> int ‑> int
val min : int ‑> int ‑> int
val max : int ‑> int ‑> int

Infix operators for Floats

val (=.) : float ‑> float ‑> bool
  • Since: 2.1
val (<>.) : float ‑> float ‑> bool
  • Since: 2.1
val (<.) : float ‑> float ‑> bool
  • Since: 2.1
val (>.) : float ‑> float ‑> bool
  • Since: 2.1
val (<=.) : float ‑> float ‑> bool
  • Since: 2.1
val (>=.) : float ‑> float ‑> bool
  • Since: 2.1

Shadow Dangerous Operators

val (==) : [ `Consider_using_CCEqual_physical ]
  • Deprecated Please use CCEqual.physical or Pervasives.(==) instead.
val (!=) : [ `Consider_using_CCEqual_physical ]
  • Since: 2.1
  • Deprecated Please use [not CCEqual.physical] or Pervasives.(!=) instead.
\ No newline at end of file diff --git a/dev/containers.monomorphic/index-generated.mld b/dev/containers.monomorphic/index-generated.mld deleted file mode 100644 index eb74308f..00000000 --- a/dev/containers.monomorphic/index-generated.mld +++ /dev/null @@ -1,2 +0,0 @@ -{1 Library containers.monomorphic} -This library exposes the following toplevel modules: {!modules:CCMonomorphic}. \ No newline at end of file diff --git a/dev/containers.monomorphic/index.html b/dev/containers.monomorphic/index.html deleted file mode 100644 index 480fc0cd..00000000 --- a/dev/containers.monomorphic/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -index (containers.monomorphic.index)

Library containers.monomorphic

-This library exposes the following toplevel modules:

CCMonomorphic

.

\ No newline at end of file diff --git a/dev/containers.monomorphic/page-index.odoc b/dev/containers.monomorphic/page-index.odoc deleted file mode 100644 index abc761f61974a63d1aaa8d6e161fc39fb5ea6f2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmc~#$xqfb)HBjEXqmcf9|Hq}0T8nSu^12wY%ojC&nrpH%u6jQ*2~S$%g@a(D#*x8 zo}ikUmy%jx@L~O^~VZnm!jt&bZ z*!g586(tr`Dqwd8Pz9$MS4c)?u|f`1VQNJ|esOBCLPPHM50!h%^qI~M9XJNqJh<>&x3P*KmpfkhMm{FP`Z diff --git a/dev/containers.sexp/CCSexp.odoc b/dev/containers.sexp/CCSexp.odoc deleted file mode 100644 index 8b8e09ede9a315c186ccf3ca0cbbaf498a902628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3528 zcmb7Ge~cVe9p9auG299iqdl?K_O-XSyZ3AN?mz|4@TETkH`_H3RL*uLA8Q1Wb%vAPp#*MjmPq%$LAg&Z~pr?2lpxVtM;c-nIEK5*>~Y-zao{&rQ-J?#5AHf zerBs3M>pI;eaCbCDKg#%`UDFCm-~Tj+vXKkxmdtyK0XxuOeuYKmx>epKd&veClPAn) zJHajLMdsa0()M<62m$Nx|3Yq(b58+ZE>w7}P6hbiRFEzW?UT?Bs5gcDZEl(d(~)^x z!G@%~HHvmIN5Ohaj!hAJ}8Df*o;`aEY#*j*Y{=mD5uGYSeO z5A0?$Fa#J0rx`*173;nu`M;(3Bh5cl1pcbWX^8&*U*?5QiIJ+0Y1UiOLae9AO0PxJ zPH4gxkx-|u0K$eP`#!1nSyc@`R_dSA(EVKig(9wd48Q{k_+`X}|epk9AdjDOdR-|q&-87f=~S&8H3^{b!6r!_{XmD1WK0+hg1=_D*LO6>>f<6l`d(SuVZEuixgVeo!ARLYf+Q)#0B#)c3N(* zDtI`SiMP^6WiqVv2(+_QvD0puBgHWoVWFC0*z8vN-F(PlT2{fB(@^=xnpXN>o5IA* zNhRYkWv20=E&!`G1pKdMr&wvOKtI=@4Fv#IU0Gv))R41@z=I0=lE#*MG)1}sO*IMfTnJz!9ma&g1N z>fK7@k-%ic&CLZ0XQTptLrfaNhqJ=%Sn*^oj)utWG~~|>6%WjH=w@iU-YoPkwB87H zJ;GoD6cvyv9FhB&%z`^O4H_6^=JXOSvT?KHX5WdU8;M($72^8!MyQ~*dN>aOUfHX# z)uMR$VY91K8U)!s7^%IAr-M1v4u{`}WSJOW!R-fxA=Cip_eFRRU3$neUM*~gUUuMK zWf@1BO}RbWU;#rs5(?-AxZa;1!Cv;*oNOxN30-4n^6Cf!zi4hW+hwB7j-1ctq^!0Y z#$Rm`JbTX#54=x8j75ewmiNZM4g5lw^*EFS^Lb-x8ad=4guO0!9V)f;%9u2bxkegf zWlU3GBo?hqn`L}idSmOgmAP6Mg6@29ysT`!d?#DR&$PJpmhlG4vkX|Fvhy;zZdFdQ z`9Mb7gNcw0Jb*kDQ(a@D8vQ1VQbx4g1MjRSaC;{qceO7^6FctH?B;ds15C>c* zK!m*lbu!Nz#AkA3!hOAO3f77bUwDHT+#^L+nkr>sm#xiX@Yvj_{9Z`>9xko=J%P7B^nEb#UHb=vLJl;bGXb|B*3eQ@R+f%-(W~c6r0GG99WWGxlYI%u&VtQ}udrMM$7i zC#O1^U%0gnt&QQpBe=0SDt>xFt0cNBw;?N2w$VDK1fNSn^L1?;3R$^Ry?^1`rEqy; Nvy69?j<;nA{}-EiVh#WR diff --git a/dev/containers.sexp/CCSexp/Decoder/index.html b/dev/containers.sexp/CCSexp/Decoder/index.html deleted file mode 100644 index 6a8a2937..00000000 --- a/dev/containers.sexp/CCSexp/Decoder/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Decoder (containers.sexp.CCSexp.Decoder)

Module CCSexp.Decoder

type t

Decoder

val of_lexbuf : Lexing.lexbuf ‑> t
val next : t ‑> sexp parse_result

Parse the next S-expression or return an error if the input isn't -long enough or isn't a proper S-expression.

\ No newline at end of file diff --git a/dev/containers.sexp/CCSexp/index.html b/dev/containers.sexp/CCSexp/index.html deleted file mode 100644 index 46e2b5fa..00000000 --- a/dev/containers.sexp/CCSexp/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -CCSexp (containers.sexp.CCSexp)

Module CCSexp

Handling S-expressions

type 'a or_error = ('a, string) Result.result
type 'a sequence = ('a ‑> unit) ‑> unit
type 'a gen = unit ‑> 'a option

Basics

type t = [
| `Atom of string
| `List of t list
]
type sexp = t
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
val hash : t ‑> int
val atom : string ‑> t

Build an atom directly from a string.

val of_int : int ‑> t
val of_bool : bool ‑> t
val of_list : t list ‑> t
val of_rev_list : t list ‑> t

Reverse the list.

val of_float : float ‑> t

Reverse the list.

val of_unit : t
val of_pair : (t * t) ‑> t
val of_triple : (t * t * t) ‑> t
val of_quad : (t * t * t * t) ‑> t
val of_variant : string ‑> t list ‑> t

of_variant name args is used to encode algebraic variants -into a S-expr. For instance of_variant "some" [of_int 1] -represents the value Some 1.

val of_field : string ‑> t ‑> t

Used to represent one record field.

val of_record : (string * t) list ‑> t

Represent a record by its named fields.

Printing

val to_buf : Buffer.t ‑> t ‑> unit
val to_string : t ‑> string
val to_file : string ‑> t ‑> unit
val to_file_seq : string ‑> t sequence ‑> unit

Print the given sequence of expressions to a file.

val to_chan : Pervasives.out_channel ‑> t ‑> unit
val pp : Format.formatter ‑> t ‑> unit

Pretty-printer nice on human eyes (including indentation).

val pp_noindent : Format.formatter ‑> t ‑> unit

Raw, direct printing as compact as possible.

Parsing

type 'a parse_result =
| Yield of 'a
| Fail of string
| End

A parser of 'a can return Yield x when it parsed a value, -or Fail e when a parse error was encountered, or -End if the input was empty.

module Decoder : sig ... end
val parse_string : string ‑> t or_error

Parse a string.

val parse_chan : Pervasives.in_channel ‑> t or_error

Parse a S-expression from the given channel. Can read more data than -necessary, so don't use this if you need finer-grained control (e.g. -to read something else after the S-exp).

val parse_chan_gen : Pervasives.in_channel ‑> t or_error gen

Parse a channel into a generator of S-expressions.

val parse_chan_list : Pervasives.in_channel ‑> t list or_error
val parse_file : string ‑> t or_error

Open the file and read a S-exp from it.

val parse_file_list : string ‑> t list or_error

Open the file and read a S-exp from it.

\ No newline at end of file diff --git a/dev/containers.sexp/CCSexp_lex.odoc b/dev/containers.sexp/CCSexp_lex.odoc deleted file mode 100644 index 02fe605e9c2cb66cfda9f182c9064878e891b18d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1057 zcmb7DT}TvB6dv>{S@xeIREW8|>6SaIrTCLDx~;KfuC*FS!ZbU3H@BVLac5?AEwYCK z!wRmVE@jYI{zO`7P|-`QM88m|4~8LVkcAoOOZZfDXJ*BGY~V7?ch2{n@0@dockygi zwkgMCzTDaWf*=SIpE!Jy@!2{|vb(Ys&vBV4W zhc4REw$Edq^eC~ho! z75K1JR<@8S%lQ_@$9en`6#NWV#tS}1DrH0uD!P?5UQnvB8bCHANld^<`Y39ELppGsv6}fQd7y_vYfiADHj^Y{-yhV{D>FaPM&BvC>kxjoVc z3iT52g?YDyRv=(Q8o1M_ zf|hc-!-{}Cil(Jo?KT9e@h2sBMD7DdZxsYyK%iDrPRG-tlo}vjdu1w_ox?+*K@YXe zz+6!k2&+Cpkzxz?p1LNUgFufKw<^U{-y=q4moy9n84iIV z)o7Pa!J?+)73*C(C(m;l<8_t*eS8C?13_NG*9wfP9fL|>k5XFHZd4VC J)x|d4=wE|@tYiQH diff --git a/dev/containers.sexp/CCSexp_lex/index.html b/dev/containers.sexp/CCSexp_lex/index.html deleted file mode 100644 index ae2b6348..00000000 --- a/dev/containers.sexp/CCSexp_lex/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -CCSexp_lex (containers.sexp.CCSexp_lex)

Module CCSexp_lex

type token =
| ATOM of string
| LIST_OPEN
| LIST_CLOSE
| EOI
exception Error of int * int * string
val error : Lexing.lexbuf ‑> string ‑> 'a
type unescape_state =
| Not_escaped
| Escaped
| Escaped_int_1 of int
| Escaped_int_2 of int
val char_equal : char ‑> char ‑> bool
val remove_quotes : Lexing.lexbuf ‑> string ‑> string
val __ocaml_lex_tables : Lexing.lex_tables
val token : Lexing.lexbuf ‑> token
val __ocaml_lex_token_rec : Lexing.lexbuf ‑> int ‑> token
\ No newline at end of file diff --git a/dev/containers.sexp/index-generated.mld b/dev/containers.sexp/index-generated.mld deleted file mode 100644 index 559aaa65..00000000 --- a/dev/containers.sexp/index-generated.mld +++ /dev/null @@ -1,2 +0,0 @@ -{1 Library containers.sexp} -This library exposes the following toplevel modules: {!modules:CCSexp CCSexp_lex}. \ No newline at end of file diff --git a/dev/containers.sexp/index.html b/dev/containers.sexp/index.html deleted file mode 100644 index 3076792c..00000000 --- a/dev/containers.sexp/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -index (containers.sexp.index)

Library containers.sexp

-This library exposes the following toplevel modules:

CCSexp
CCSexp_lex

.

\ No newline at end of file diff --git a/dev/containers.sexp/page-index.odoc b/dev/containers.sexp/page-index.odoc deleted file mode 100644 index e84cae87adaa516df59028a548f66713dffb1149..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmc~#$xqfb)HBjEXqmcf9|Hq}CJ?g%u?P_JZ_rQ9&nrpH%u6jQ)+_9oSoS? z?g>yifzZ0pM1sq

@gsp_ksO-1;|wIB-F|P*og2;soEf>mO-ALL!pmncbQ9z3;s@ zW7(GOT*I2T>X)y6b*E4$EWoD(pJ(9n)Lz4tLQ^hSq%7@6jJB`YOH1bi>27eb{(8(} z=F~radT0Nd{HwS4?!B{5{4t?&q(|=;3dJt~%q$d)4<9QO%tHGA@Qg>2G`)S!NfT>W zndGHYcsB9Yn$H#4L@vaqick{pkZaZ^ieF+DS&5YoWa0T14PcEFMEh*8q3bh2xGn>N z7Y709a`@N6{wyc`#H?G51;=axXbawMF?jvC@#{~!zZ|VSccOab!KELrJIUTz6}fgUr#dXB1!X2| z+m|7;6%VDbyE58P9qKZBY=+%z#XM-+ZRXK9(DjS=uismLw*TkN%ggUQ`2OwR&pAnY zW&egzt!U6LnV4Fo9-GTc4m$T_lnbJW^oZ_t7)kpt%uvVKhaDC8#=rFH-c4h1+6C)1 zL#WeB*$~tetUG{${U|l;uZT3MTI3Cdf~WmiaVDhOP0$TETqHD zxB#~XP}TW&78+m(3l#xRz)Pudy~i~yB_RuC)SEq>?}rML;!FduPm~X1!`7DE20yh= z>I8ai5EihIVSO$XZ!<9X>-q%&q2TQ%jn-p)nI@Cm1KcS=UM7HCu^i`?^JS9kOhOkp zxMBDP#0~_?w2@{9@&(HDt2iK=WE&(PIA#ifDlnafiqHd0Hi0Xt8xgA5KU z8kMZdEeC2L0W$`j@}j$@rW=_Z6UWzJl!16WQhM0r!!-nBZPp$EFJ{01n|1KbERt;o zT;*ArT){qa3osdQR`6X74h|!&9)69GUK>!%_~EK-4l`puXL@%QnGV7GbE6p%1jLvj z_#o2>l5@Z!8EcGXF4@Qgqc^T+e1L8kcJ?G|%^0AZ7>F9u!O4Gz!bDbs ze9U0*krZA?HB5ci=dNFNsbXNufFx>W>L>=53s(7phi^Q}14UZQr7jXYoIcB%NjiI+}h^|9qRY_SN@M~B>vqX-Uk&_e}BhisVK zQgJGEFhHdu+yfcjr&X82HOqA`!!*a3+3!Z)P5v|E!o}swV05BN#gjucyfps?sBX-n diff --git a/dev/containers.thread/CCBlockingQueue/index.html b/dev/containers.thread/CCBlockingQueue/index.html deleted file mode 100644 index f2d80da4..00000000 --- a/dev/containers.thread/CCBlockingQueue/index.html +++ /dev/null @@ -1,9 +0,0 @@ - -CCBlockingQueue (containers.thread.CCBlockingQueue)

Module CCBlockingQueue

Blocking Queue

This queue has a limited size. Pushing a value on the queue when it -is full will block.

  • Since: 0.16
type 'a t

Safe-thread queue for values of type 'a

val create : int ‑> 'a t

Create a new queue of size n. Using n=max_int amounts to using -an infinite queue (2^61 items is a lot to fit in memory); using n=1 -amounts to using a box with 0 or 1 elements inside.

  • Raises Invalid_argument: if n < 1.
val push : 'a t ‑> 'a ‑> unit

push q x pushes x into q, blocking if the queue is full.

val take : 'a t ‑> 'a

Take the first element, blocking if needed.

val push_list : 'a t ‑> 'a list ‑> unit

Push items of the list, one by one.

val take_list : 'a t ‑> int ‑> 'a list

take_list n q takes n elements out of q.

val try_take : 'a t ‑> 'a option

Take the first element if the queue is not empty, return None -otherwise.

val try_push : 'a t ‑> 'a ‑> bool

try_push q x pushes x into q if q is not full, in which -case it returns true. -If it fails because q is full, it returns false.

val peek : 'a t ‑> 'a option

peek q returns Some x if x is the first element of q, -otherwise it returns None.

val size : _ t ‑> int

Number of elements currently in the queue.

val capacity : _ t ‑> int

Number of values the queue can hold.

\ No newline at end of file diff --git a/dev/containers.thread/CCLock.odoc b/dev/containers.thread/CCLock.odoc deleted file mode 100644 index 5d5e3f52d2123f29a6f0025a607bbd4626ef994d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3059 zcmbVOYls_F6i(I&ZMLE-1z%LWG1+XpB$H%YO4UAQyFO@XX>GSYKnORJo9?)ixnbtc z?nV>@OU2@k**-y0rfXLOMVJ1mAWEfR{}x41@JB)PhX~a_f}qrM?ww3F`#{^$ft@om z=ljlgzH@GPotwpqKBAY8o%!I)L?TgyD+SlRaNV;|F}WkCGzg)ek60AF&NZheLkx1`PB-TE+Hj&6B!dptC^#x&gY19aV zkt4#gJwjdXJ9V<(7i`7|A)eMp$rQDHMy6fbYOy-89Ki`yuM|jwyQIloMm*YJqOBX@ zscc!_W@vYZ;kGf_wBdE;I@ErOyG<%~Q_nKJpxplCt-CHA{&ez*hp&%6d-dG9FdUSa zLHVEiu3tO1X7Kq#Z~S`vs}t6{VK{t{xl{1n6oU`n(SG~!+|L7rhqi1ydE@0D=8Rxr ztLK^}C74%Ig6V*pE|n&Dla)NH$(_j>qEAjW5^dF-}5T3j|uN5-_WD0h6l<<64$^>FeTVevlu(3(TWq2t=4f!uTv+%LD zJ#RuA1;ej*jLARYWrt0Zmdgb*1!R!o>V|RAfNw7Z!MwId+aUAE6bCmUL=^!b%WN^e zBQ|M-L7uq2Wm21XK+xijPWCinfQ_UETxjp^~+~Oa87EzkiarOkZ_sJsK@HEP^ePd zEK9to$__F$_%G`{Q50^w8dr%mS9&5V*8SMZ)QN@6vA8lS;c(H9gn$NyQK8&w3f0_uMnzO6k;WQkof82*{VX;!^ayG`GJVMa`D-m?^wc+?~UgDRvo86tEg88d+S8k zYxm2k3FH^44T(qr8MtJQdFf_QH z3MCkf#xl9os^cBo?38QGZtMNyFf1wqX;BZHj2}mcS<>`9f%YQIGbuC#N2}pGa(*Pc zuI5sLR8mtK1VN^Okq?8pRPqJwct%7LcLpMrWF7fHfnlYjs(UN6v}MCeQ!|cxjX45I zfwOZYE+Vf4>FkJNfl$GlIO0$kE*{W7mE68UQ(lkSaXP}SHfakRp(`4AtEdbUlQ&y% zXkZsAGeZT^COb%jYy<-lds7$`3aE)g;2nJBk(nW+2>V9OR_~w4@UVaQNGGlbww zT5Jpp%!8+AbY`kG*0D$5fP{WrLTfuCWU~l(3K+9Xt>ZNxvDt8s2C4ylO4jV`1K fKR~1i<(P#Gt;S=pL2d6=iCmFFY*Hi&aHRbUAXk&l diff --git a/dev/containers.thread/CCLock/LockRef/index.html b/dev/containers.thread/CCLock/LockRef/index.html deleted file mode 100644 index 510b27f7..00000000 --- a/dev/containers.thread/CCLock/LockRef/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -LockRef (containers.thread.CCLock.LockRef)

Module CCLock.LockRef

Type allowing to manipulate the lock as a reference.

  • Since: 0.13
type 'a t
val get : 'a t ‑> 'a
val set : 'a t ‑> 'a ‑> unit
val update : 'a t ‑> ('a ‑> 'a) ‑> unit
\ No newline at end of file diff --git a/dev/containers.thread/CCLock/index.html b/dev/containers.thread/CCLock/index.html deleted file mode 100644 index be00e1fa..00000000 --- a/dev/containers.thread/CCLock/index.html +++ /dev/null @@ -1,10 +0,0 @@ - -CCLock (containers.thread.CCLock)

Module CCLock

Utils around Mutex

A value wrapped into a Mutex, for more safety.

  • Since: 0.8
type 'a t

A value surrounded with a lock

val create : 'a ‑> 'a t

Create a new protected value.

val with_lock : 'a t ‑> ('a ‑> 'b) ‑> 'b

with_lock l f runs f x where x is the value protected with -the lock l, in a critical section. If f x fails, with_lock l f -fails too but the lock is released.

val try_with_lock : 'a t ‑> ('a ‑> 'b) ‑> 'b option

try_with_lock l f runs f x in a critical section if l is not -locked. x is the value protected by the lock l. If f x -fails, try_with_lock l f fails too but the lock is released.

  • Since: 0.22
module LockRef : sig ... end

Type allowing to manipulate the lock as a reference.

val with_lock_as_ref : 'a t ‑> f:('a LockRef.t ‑> 'b) ‑> 'b

with_lock_as_ref l f calls f with a reference-like object -that allows to manipulate the value of l safely. -The object passed to f must not escape the function call.

  • Since: 0.13
val update : 'a t ‑> ('a ‑> 'a) ‑> unit

update l f replaces the content x of l with f x, atomically.

val update_map : 'a t ‑> ('a ‑> 'a * 'b) ‑> 'b

update_map l f computes x', y = f (get l), then puts x' in l -and returns y.

  • Since: 0.16
val mutex : _ t ‑> Mutex.t

Underlying mutex.

val get : 'a t ‑> 'a

Atomically get the value in the lock. The value that is returned -isn't protected!

val set : 'a t ‑> 'a ‑> unit

Atomically set the value.

  • Since: 0.13
val incr : int t ‑> unit

Atomically increment the value.

  • Since: 0.13
val decr : int t ‑> unit

Atomically decrement the value.

  • Since: 0.13
val incr_then_get : int t ‑> int

incr_then_get x increments x, and returns its new value.

  • Since: 0.16
val get_then_incr : int t ‑> int

get_then_incr x increments x, and returns its previous value.

  • Since: 0.16
val decr_then_get : int t ‑> int

decr_then_get x decrements x, and returns its new value.

  • Since: 0.16
val get_then_decr : int t ‑> int

get_then_decr x decrements x, and returns its previous value.

  • Since: 0.16
val get_then_set : bool t ‑> bool

get_then_set b sets b to true, and returns the old value.

  • Since: 0.16
val get_then_clear : bool t ‑> bool

get_then_clear b sets b to false, and returns the old value.

  • Since: 0.16
\ No newline at end of file diff --git a/dev/containers.thread/CCPool.odoc b/dev/containers.thread/CCPool.odoc deleted file mode 100644 index e492aa8859bfe010d8df81f6f425c01c484de3db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5814 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 bHBEt6543NZdDHxeY3?=6-H4)ji)H-_u2!Nu diff --git a/dev/containers.thread/CCPool/Make/Fut/Infix/index.html b/dev/containers.thread/CCPool/Make/Fut/Infix/index.html deleted file mode 100644 index 30f43a14..00000000 --- a/dev/containers.thread/CCPool/Make/Fut/Infix/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Infix (containers.thread.CCPool.Make.Fut.Infix)

Module CCPool.Make.Fut.Infix

val (>>=) : 'a t ‑> ('a ‑> 'b t) ‑> 'b t
val (>>) : 'a t ‑> (unit ‑> 'b t) ‑> 'b t
val (>|=) : 'a t ‑> ('a ‑> 'b) ‑> 'b t
val (<*>) : ('a ‑> 'b) t ‑> 'a t ‑> 'b t
\ No newline at end of file diff --git a/dev/containers.thread/CCPool/Make/Fut/index.html b/dev/containers.thread/CCPool/Make/Fut/index.html deleted file mode 100644 index 83660e42..00000000 --- a/dev/containers.thread/CCPool/Make/Fut/index.html +++ /dev/null @@ -1,22 +0,0 @@ - -Fut (containers.thread.CCPool.Make.Fut)

Module CCPool.Make.Fut

Futures

The futures are registration points for callbacks, storing a state, -that are executed in the pool using run.

type 'a t

A future value of type 'a

type 'a future = 'a t

Constructors

val return : 'a ‑> 'a t

Future that is already computed.

val fail : exn ‑> 'a t

Future that fails immediately.

val make : (unit ‑> 'a) ‑> 'a t

Create a future, representing a value that will be computed by -the function. If the function raises, the future will fail.

val make1 : ('a ‑> 'b) ‑> 'a ‑> 'b t
val make2 : ('a ‑> 'b ‑> 'c) ‑> 'a ‑> 'b ‑> 'c t

Basics

val get : 'a t ‑> 'a

Blocking get: wait for the future to be evaluated, and get the value, -or the exception that failed the future is returned. -Raise e if the future failed with e.

val state : 'a t ‑> 'a state

State of the future.

val is_done : 'a t ‑> bool

Is the future evaluated (success/failure)?

Combinators

val on_success : 'a t ‑> ('a ‑> unit) ‑> unit

Attach a handler to be called upon success. -The handler should not call functions on the future. -Might be evaluated now if the future is already done.

val on_failure : _ t ‑> (exn ‑> unit) ‑> unit

Attach a handler to be called upon failure. -The handler should not call any function on the future. -Might be evaluated now if the future is already done.

val on_finish : 'a t ‑> ('a state ‑> unit) ‑> unit

Attach a handler to be called when the future is evaluated. -The handler should not call functions on the future. -Might be evaluated now if the future is already done.

val flat_map : ('a ‑> 'b t) ‑> 'a t ‑> 'b t

Monadic combination of futures.

val and_then : 'a t ‑> (unit ‑> 'b t) ‑> 'b t

Wait for the first future to succeed, then launch the second.

val sequence_a : 'a t array ‑> 'a array t

Future that waits for all previous futures to terminate. If any future -in the array fails, sequence_a l fails too.

val map_a : ('a ‑> 'b t) ‑> 'a array ‑> 'b array t

map_a f a maps f on every element of a, and will return -the array of every result if all calls succeed, or an error otherwise.

val sequence_l : 'a t list ‑> 'a list t

Future that waits for all previous futures to terminate. If any future -in the list fails, sequence_l l fails too.

val map_l : ('a ‑> 'b t) ‑> 'a list ‑> 'b list t

map_l f l maps f on every element of l, and will return -the list of every result if all calls succeed, or an error otherwise.

val choose_a : 'a t array ‑> 'a t

Choose among those futures (the first to terminate). Behaves like -the first future that terminates, by failing if the future fails.

val choose_l : 'a t list ‑> 'a t

Choose among those futures (the first to terminate). Behaves like -the first future that terminates, by failing if the future fails.

val map : ('a ‑> 'b) ‑> 'a t ‑> 'b t

Map the value inside the future. The function doesn't run in its -own task; if it can take time, use flat_map or map_async.

val map_async : ('a ‑> 'b) ‑> 'a t ‑> 'b t

Map the value inside the future, to be computed in a separated job.

val app : ('a ‑> 'b) t ‑> 'a t ‑> 'b t

app f x applies the result of f to the result of x.

val app_async : ('a ‑> 'b) t ‑> 'a t ‑> 'b t

app_async f x applies the result of f to the result of x, in -a separated job scheduled in the pool.

val sleep : float ‑> unit t

Future that returns with success in the given amount of seconds. Blocks -the thread! If you need to wait on many events, consider -using CCTimer.

module Infix : sig ... end
val (>>=) : 'a t ‑> ('a ‑> 'b t) ‑> 'b t
val (>>) : 'a t ‑> (unit ‑> 'b t) ‑> 'b t
val (>|=) : 'a t ‑> ('a ‑> 'b) ‑> 'b t

Alias to map.

val (<*>) : ('a ‑> 'b) t ‑> 'a t ‑> 'b t

Alias to app.

\ No newline at end of file diff --git a/dev/containers.thread/CCPool/Make/argument-1-P/index.html b/dev/containers.thread/CCPool/Make/argument-1-P/index.html deleted file mode 100644 index 98a72428..00000000 --- a/dev/containers.thread/CCPool/Make/argument-1-P/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -1-P (containers.thread.CCPool.Make.1-P)

Parameter CCPool.Make.1-P

val max_size : int

Maximum number of threads in the pool.

\ No newline at end of file diff --git a/dev/containers.thread/CCPool/Make/index.html b/dev/containers.thread/CCPool/Make/index.html deleted file mode 100644 index b9b9783c..00000000 --- a/dev/containers.thread/CCPool/Make/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Make (containers.thread.CCPool.Make)

Module CCPool.Make

Create a new Pool

Parameters

Signature

val run : (unit ‑> _) ‑> unit

run f schedules f for being executed in the thread pool.

val run1 : ('a ‑> _) ‑> 'a ‑> unit

run1 f x is similar to run (fun () -> f x).

val run2 : ('a ‑> 'b ‑> _) ‑> 'a ‑> 'b ‑> unit
val run3 : ('a ‑> 'b ‑> 'c ‑> _) ‑> 'a ‑> 'b ‑> 'c ‑> unit
val set_exn_handler : (exn ‑> unit) ‑> unit
val active : unit ‑> bool

active () is true as long as stop() has not been called yet.

val stop : unit ‑> unit

After calling stop (), most functions will raise Stopped. -This has the effect of preventing new tasks from being executed.

module Fut : sig ... end
Futures
\ No newline at end of file diff --git a/dev/containers.thread/CCPool/index.html b/dev/containers.thread/CCPool/index.html deleted file mode 100644 index eecc82a4..00000000 --- a/dev/containers.thread/CCPool/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -CCPool (containers.thread.CCPool)

Module CCPool

Thread Pool, and Futures

Renamed and heavily updated from CCFuture.

  • Since: 0.16
type +'a state =
| Done of 'a
| Waiting
| Failed of exn
module type PARAM : sig ... end
exception Stopped
module Make : functor (P : PARAM) -> sig ... end

Create a new Pool

\ No newline at end of file diff --git a/dev/containers.thread/CCPool/module-type-PARAM/index.html b/dev/containers.thread/CCPool/module-type-PARAM/index.html deleted file mode 100644 index d1ceb97a..00000000 --- a/dev/containers.thread/CCPool/module-type-PARAM/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -PARAM (containers.thread.CCPool.PARAM)

Module type CCPool.PARAM

val max_size : int

Maximum number of threads in the pool.

\ No newline at end of file diff --git a/dev/containers.thread/CCSemaphore.odoc b/dev/containers.thread/CCSemaphore.odoc deleted file mode 100644 index da1f3d4cc5e0d49c3a2e9e6ccec2f5eebba40883..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1265 zcmb7@J#5oJ6vqu1i53YE46szZ(5MYfV!Iy#L@9C!0>Ol6g_wvA=S)s@&gJf$Dhy>| z1Io3fbU;W3QCRq>SlAE(Bt~W=gjm=>OiV1?*`^5y2CSTNzWcv-@ArS_uoimdL2Jlz zt}H!xVHn1c8XMKvsmAuzK`*2N5sDeNM4e$&yIZVOCU65y*F%O~=hN4@k8f5!*WVR) z9qc)|?OdA0ylxol_87*7%WA+T!^j))|K~E-%Q${M?#6Op?L_Xn@nYVw28Ug9a~vP2 zphiHbz>K2cSjZYk96_9TTso~M*S0*Lcsg}-_ovA-Z&>01nDis> zVnkR{crlv;1s+Qa&Ih44#UY}C1nT$!l@~Z19@Av|OCai)0uo_^cqj;3-5d+9WJL}K z#~{a{taXYgJ9i}eA5IF-M+!f!;YL5h0Y*HnA)BW)40hyK{{5c6_@C+iNnl!J9L{&Siuf_c6U)I|`ltFL*qv_?W>3{Hd?d#V342y_S4mzA+ ju0AIVj)s`iegTcJM*Nnxs14f5^E%^s)yZ=+<8j@eiAm(y diff --git a/dev/containers.thread/CCSemaphore/index.html b/dev/containers.thread/CCSemaphore/index.html deleted file mode 100644 index dfe11acb..00000000 --- a/dev/containers.thread/CCSemaphore/index.html +++ /dev/null @@ -1,6 +0,0 @@ - -CCSemaphore (containers.thread.CCSemaphore)

Module CCSemaphore

Semaphores

  • Since: 0.13
type t

A semaphore

val create : int ‑> t

create n creates a semaphore with initial value n.

  • Raises Invalid_argument: if n <= 0.
val get : t ‑> int

Current value.

val acquire : int ‑> t ‑> unit

acquire n s blocks until get s >= n, then atomically -sets s := !s - n.

val release : int ‑> t ‑> unit

release n s atomically sets s := !s + n.

val with_acquire : n:int ‑> t ‑> f:(unit ‑> 'a) ‑> 'a

with_acquire ~n s ~f first acquires s with n units, -calls f (), and then releases s with n units. -Safely release the semaphore even if f () fails.

val wait_until_at_least : n:int ‑> t ‑> f:(unit ‑> 'a) ‑> 'a

wait_until_at_least ~n s ~f waits until get s >= n, then calls f () -and returns its result. Doesn't modify the semaphore.

\ No newline at end of file diff --git a/dev/containers.thread/CCThread.odoc b/dev/containers.thread/CCThread.odoc deleted file mode 100644 index 14c7a24bb6e9157ad5d0a6f6867d75b45a3e5711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2021 zcmb7FU2GIp6yBPt&|(0M#$ZA?3)|goyWO7_X)&QpTY?f3CA6T4CT4c#?(Vg-cgUUD zE=%Hrf)4~Rvmhmr2d@bFVx;kQr&^*@1(2STNmr%V;5G?#BG zQ(eG$-Vdyx=062BfmYFFrm0RR^4Y?eX*{gd))}knauF~oEO(lhEh()=n1BAx@dx+* zap&{5e!Y5n?L(92l$yAA<8Dt@tzg>nx$TGf#>XetF3(87@uu(#~nQ z{ajn_EC$w>%T>H8%lW+OiCo>2^Zr50X1Q*ba<3F?+;wseD_J!+$lv(++RHZ+f!uuJ zhr)~B%}q_2p*nTtqA?i{LS>p)Of$Uje$#j&9+;@)nWc}6X9p0oE-(SjRAfO(g?#`v zWNKKnz3L zgc2N5;UI7yTt3eb>`6_XF4Y90!pJ0T(datg+ai)MZs8OEk-~^;{9_t_l<+eV%qSg( z#!80q`!PV{z8pkR)I^a(m}ec zYQ?cQ5HTux_hGBHb|qf*cvMZIwo6xhT7AWWUc~8reCMxP{d0?U_im-h{?oRE~O}k9q)WJJDLnK+R_k z1RnSeVOOLl_+i!+{0i~uq(7R}-9X0+Gf`t;UlcWERR84e-@5QO8yobg8C>mnn+3F+Rp0E(_> z&l6ME@8~|Nqkxgq6oD6&5r)_;qn9+x3!3G~V4KAun&HljbQuK6f|}I#TOeypg#*A# z6zK|o3dq-1A_JCia6>A}cBF2qpO!J&mRR6(VY4jk5r7IX33!z|J}ESM4?VV?rc6PV jS;EJz>)#PGLoSq;YkW^F;Vn9H>y|TQ`7txO27y| diff --git a/dev/containers.thread/CCThread/Arr/index.html b/dev/containers.thread/CCThread/Arr/index.html deleted file mode 100644 index 8e8a3a33..00000000 --- a/dev/containers.thread/CCThread/Arr/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -Arr (containers.thread.CCThread.Arr)

Module CCThread.Arr

Array of threads

val spawn : int ‑> (int ‑> 'a) ‑> t array

Arr.spawn n f creates an array res of length n, such that -res.(i) = spawn (fun () -> f i).

val join : t array ‑> unit

Arr.join a joins every thread in a.

\ No newline at end of file diff --git a/dev/containers.thread/CCThread/Barrier/index.html b/dev/containers.thread/CCThread/Barrier/index.html deleted file mode 100644 index 5c8077d6..00000000 --- a/dev/containers.thread/CCThread/Barrier/index.html +++ /dev/null @@ -1,6 +0,0 @@ - -Barrier (containers.thread.CCThread.Barrier)

Module CCThread.Barrier

type t

Barrier, used to synchronize threads

val create : unit ‑> t

Create a barrier.

val reset : t ‑> unit

Reset to initial (non-triggered) state.

val wait : t ‑> unit

wait b waits for barrier b to be activated by activate b. -All threads calling this wait until activate b is called. -If b is already activated, wait b does nothing.

val activate : t ‑> unit

activate b unblocks all threads that were waiting on b.

val activated : t ‑> bool

activated b returns true iff activate b was called, and reset b -was not called since. In other words, activated b = true means -wait b will not block.

\ No newline at end of file diff --git a/dev/containers.thread/CCThread/index.html b/dev/containers.thread/CCThread/index.html deleted file mode 100644 index 1b8a1dbe..00000000 --- a/dev/containers.thread/CCThread/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -CCThread (containers.thread.CCThread)

Module CCThread

Threads

status: unstable

  • Since: 0.13
type t = Thread.t
val spawn : (unit ‑> _) ‑> t

spawn f creates a new thread that runs f ().

val spawn1 : ('a ‑> _) ‑> 'a ‑> t

spawn1 f x is like spawn (fun () -> f x).

  • Since: 0.16
val spawn2 : ('a ‑> 'b ‑> _) ‑> 'a ‑> 'b ‑> t

spawn2 f x y is like spawn (fun () -> f x y).

  • Since: 0.16
val detach : (unit ‑> 'a) ‑> unit

detach f is the same as ignore (spawn f).

module Arr : sig ... end

Array of threads

Single-Use Barrier

module Barrier : sig ... end
\ No newline at end of file diff --git a/dev/containers.thread/CCTimer.odoc b/dev/containers.thread/CCTimer.odoc deleted file mode 100644 index 8d91ee79c5c631a0f5c3afa48540cb0a68c83f59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1645 zcmb7EPiP%Q7~kkde9u4V!3s)olDy=lNxJVP)usid8=npIAc$$igAnHJ&L&HCXO@}S zygae>V8x5zylC5lmr-m5DH?j|tpq(-yy&&iLj`jX6!9Ql{bpv925)(=Zst$S@REDI7N$xxS|0&|I2g7jdr(^)KK$%$4YL8w1%w1e4`q5q85r#d*#QYs0jI9p^q z$MRJy(nzRw|J#qBytVY*`fD%TKmXQ`S0B@Q>J7p-;Oho~&!78$+`GE_)XdQrC%683 z_wJXW+MX9YYB?4}t70L5@U>QJjpd{z(wxy&kMVU;;E1#yaMxPtmT4BZVv^u8lkGc4 zPTlz7**o7~n%e#8gQIn^5GuX3bIlJ%B$Tdda|=jBYa}i+!coFFB8CSMpmP%Ok_wbk zluChEk0J*s2*aJw{PgAR8~*8u2(*&K1e;kvl=K{jaO!6Gl~Pw4B~7JyyXK$spLdsD zZwVq-$R=G`!!(A>aCM;8aSRMK?0BOMcC+z>pP=B`b zjenuJBw10ASm`iS6%!wh;{+fYBIY_c%K#oh5xjJ9w7!RX4B12Wn@dm2ybIKWy95Cl zV*$4MdN00Kr_;n9wzyFb3nX0XeXvUv)bS)^ScW&18c8g8KM5`9)RDeDik;-69jh2H zlvpb}9?1sIN)S>wLPjT#Y4r*Mf=w9?>M~6?ttvv|yf`e*ixs)k2O)mqAZ|Hc?;bn5 znM&wH-dFxRd&J%!2T#I|)`PZvtDHg6MX*BCa%_yzNRR>DG#2K4!#LGyYM<7+9*iaC zK+RmC$XW&MCp2XnYHhtyKgtLcczrx38SZO!24pBW+el*)&)6eL%7wJK9br}W+K6$M zy=8q^wK4(xj16P1)3&OGKJD3k -CCTimer (containers.thread.CCTimer)

Module CCTimer

Event timer

Used to be part of CCFuture.

  • Since: 0.16
type t

A scheduler for events. It runs in its own thread.

val create : unit ‑> t

A new timer.

val set_exn_handler : t ‑> (exn ‑> unit) ‑> unit

set_exn_handler timer f registers f so that any exception -raised by a task scheduled in timer is given to f.

exception Stopped
val after : t ‑> float ‑> f:(unit ‑> _) ‑> unit

Call the callback f after the given number of seconds.

  • Raises Stopped: if the timer was stopped.
val at : t ‑> float ‑> f:(unit ‑> _) ‑> unit

Create a future that evaluates to () at the given Unix timestamp.

  • Raises Stopped: if the timer was stopped.
exception ExitEvery
val every : ?⁠delay:float ‑> t ‑> float ‑> f:(unit ‑> _) ‑> unit

every timer n ~f calls f () every n seconds. -f() can raise ExitEvery to stop the cycle.

  • Parameter delay: if provided, the first call to f () is delayed by -that many seconds.
  • Raises Stopped: if the timer was stopped.
val stop : t ‑> unit

Stop the given timer, cancelling pending tasks. Idempotent. -From now on, calling most other operations on the timer will raise Stopped.

val active : t ‑> bool

Return true until stop t has been called.

\ No newline at end of file diff --git a/dev/containers.thread/index-generated.mld b/dev/containers.thread/index-generated.mld deleted file mode 100644 index 2ca8e050..00000000 --- a/dev/containers.thread/index-generated.mld +++ /dev/null @@ -1,2 +0,0 @@ -{1 Library containers.thread} -This library exposes the following toplevel modules: {!modules:CCBlockingQueue CCLock CCPool CCSemaphore CCThread CCTimer}. \ No newline at end of file diff --git a/dev/containers.thread/index.html b/dev/containers.thread/index.html deleted file mode 100644 index 3519f5f4..00000000 --- a/dev/containers.thread/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -index (containers.thread.index)

Library containers.thread

-This library exposes the following toplevel modules:

CCBlockingQueue
CCLock
CCPool
CCSemaphore
CCThread
CCTimer

.

\ No newline at end of file diff --git a/dev/containers.thread/page-index.odoc b/dev/containers.thread/page-index.odoc deleted file mode 100644 index e18b49090fbe2118e7021c564f868b51f6de5c93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmc~#$xqfb)HBjEXqmcf9|Hq}HW0G{u_zD=Y%omD&nrpH%u6jQ)+@;!J()j+>TD`F-^8AE@?^KyCU!ycmdkH!LK<02ZbR3l?m5bXYLK(kC;i zD6yzg0mE{jB&QiyNJeI{LJm|-YDGbQacZ$bNk*zdT7FJWetBkIx}W07wS7ZJLTjjX9Lv)mZp}b0 -Containers_top (containers.top.Containers_top)

Module Containers_top

type 'a printer = Format.formatter ‑> 'a ‑> unit
val eval_exn : string ‑> bool
val install_printer : string ‑> unit
val install_printers : string list ‑> unit
\ No newline at end of file diff --git a/dev/containers.top/containers_top.odoc b/dev/containers.top/containers_top.odoc deleted file mode 100644 index e4c37afdadca88a402809690ae465127e62afa45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1331 zcmb7DeNYr-9KK*JQE4(m1xX|hxJ$TOJ|xI=mXFRrNZ|O0W{TN6_PB+;-E((2IC5kn zQw9lMuKnF%F_in*QsLcV^#xp6B=R zyuTlp!)b#<6rl?INcG2GN+gm{bk?A=1)Yr@3N6QqB+XL1pb$A@lOp!fJsaH#JUl9| zb#Qg@`;vyn-gjT^s&PiahLL(jB5{qBNL*}dB@(Fw{{L8*3xEWHxk4z57DUl(qy&J= zGkTZ3w^n-k)LE8(%RD*&VL(iQPDk+o|ENA9>dKx%)wc(S7FDVRIfRk1q=BJXk>XjB zQE|M16k|w%)}lD(vlUPFs@wD9e5TVf25Q$s_)Ve?mqJ{x@*|Cz`(gb|ed_VQg!N$!2sE9Z^ml8yPH_S&?K1kvHnImfI)C)^J z5c<8$ngBlS9&VPmp6e-!wN&)9CEDwD76fpwE$TX{sybyca9@i0>IjkqzCsFmN2YaU zGdq6eN1}Jb(dpHJ4MPz6$LCNiO7!#>55Jl1E1Y6B?Mg5I#O*SKK@No0(WHi<03KWA zpWrvp*4S$V94$W^)1Vc97aI<HieXC?z=b`5d^;Klhq7T*0nH5@rsVp$va z5WQ9+rzJ(2V*xIzRa%dmlIr-MM9ubj_ua_GM2^j+oh_VLZBP9)g}fbB7Z{Y8Rh@&p zN+OK_KmOj#+sR(7N1rqHXLyDxZlM1MGv?;b z2|0xS{)cUk0X>bnKx23Fnzd=_yTMf3qJFWjs@3!}nuRpZ$Z#C8CDL6NeKA6xSy)xS z`Q#72%}ABzT#BaghPlQ!ul-v^Fc_uR!^dx$YSD!tvz3_d23(an0WXeni5$i z$+PH5QD+mcCFDHwXUn9m_rgmVOP$vV&=Do@S|!?S3 z$np7tk77+(lcUZBDGRj0U*;Ek=uzn;$ zcz__HfVqxusfObiCv#j$vw}!6O!lLER~!Otqn(QFaMEV+|Ih@0O*sQg88qV1&Xp1l INf@f)FN;J;bpQYW diff --git a/dev/containers.top/index-generated.mld b/dev/containers.top/index-generated.mld deleted file mode 100644 index 88259e26..00000000 --- a/dev/containers.top/index-generated.mld +++ /dev/null @@ -1,2 +0,0 @@ -{1 Library containers.top} -This library exposes the following toplevel modules: {!modules:Containers_top}. \ No newline at end of file diff --git a/dev/containers.top/index.html b/dev/containers.top/index.html deleted file mode 100644 index 64b90375..00000000 --- a/dev/containers.top/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -index (containers.top.index)

Library containers.top

-This library exposes the following toplevel modules:

Containers_top

.

\ No newline at end of file diff --git a/dev/containers.top/page-index.odoc b/dev/containers.top/page-index.odoc deleted file mode 100644 index 9084745bdbdf122c2c703bae48e1b4f83b7d9e15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmc~#$xqfb)HBjEXqmcf9|Hq}1`x9Xu?P_JZ_rE5&nrpH%u6jQ)+@;`n4p@Omy%jx z5c=4r?~#$LjfTws#d0O}oKU^XfO@2XI2nk8HY_AoHw)8*1q-%2IxLuA=98IJlvq@$ zfNCvJhSQ8IBqOs}AqT1;wW1)uIJH=zBqLQJEk7qGzdSQ9T>751)YqVBd0k!ZwAQE%e4y-u9jb(1(Wq0KsO9u{d_?6_%)%4)nb>m59v zS?12hae=7N@}r?C<2<3^F-?;QMW}foD6J5&R1j1mEg*!1K+yi61d3>Bg-F8>_|CmE z`*4$n5-IY|opbLw=R4}_jXICDc=Tc$01 z4~HnpAPk=wD17q|#Do0I(~m8DX7tSDUAMlxWvZSD#37q{N~ z!iJ@Xx*mSI{lVWJhpi(fui1W( zU!&ZA=)(GaTV7IczjXegOK*i?=UAzt!;4+^5dYx!o>xD+<=Nl(d;j^%Fw78oL0(2WE+xY^?Wniu^es#H3N|Wf+ z@QHx3X(PpZP`44a2?m^}bjRRy=Hav7QT8o2c}cIDMd*TXkkU4ZXQnf$opG00J}c=C z8#igSV%j#-y@}eC>G)cqAZ$=plYV8bH1ybt64Vu?JApDh2M-a*AcRMTTk}bDE36XF zK!cu#qi0G>LStI1dTz<&9G1}fG{ ztYOohUggZMm`qwl6%@{{qcqUms_7JCZFGd(l)8^Whs$&)?T&xiEcqH6^08evcCGFI-^Ho5IR-3NZue)O^(sd4%69!az!~rKa_7$G|zR6`kr{9oWwIWky46yr=S`kd0wO) zvgFlnKnrGBEsN%dWot4%JUj$lH0Tej|z zM^{Usalj#C$kRIWYv3!$t(8FaM&a*eQI3W|KXBka(uGn2uV%_kA*E75rnOl=)f>G7P?=m1Z6ZU;&4yyu+FOp*M^3^__ z&p4%`;Dd;dKt!oc1I-1B9HLT3)uGGorb5ssOqQim&rN%lkIa@e#Tn^h<1^wfKodQ) zuRxmT5uBPxkb5xjKS~DXG?N`7K<|{B#JVgBNu#$Egac2Jd{$I!(Q?GnX#i{f=tC4x134N zvJ@Ucmpxi~h-iChH4HLTvEgjKVHR5ku3r`g-GW9PyzHuWkW;W@3!@*L(NV3&q*3jL zWom3NHYsX#k}r`LhKc@Qfa>fSa9|Yi1}~|JlE~xa`{O)LZn;h#LsaHQa-VWSrgEcI z_Y9P%?YSO$bgWIr;2Tl<4AkT&&KH{Vji!i!xNwtClN)G>K_q63#kjj)gsV9a3C^4e!S7i&r^j<_} z0tE=J6myJ@an{x+kPO`K#Ry{Cap#reaGIuJ^qrQzr?H*X?r1%pg_);Y+{Ezg#RM)= zBpqcTWm2O%c9KdS200oFXk-%48q#T{m==bMBX zhq@^7*2u(bqAbBR?l|4>KxJS61GxxBAg+*&PfLdfQg<-%FS-%TJDM#+TIT$z>N2*s zyl!xCXjr4pQ6viEMSK1FsEm;ig5BG@Tbw9fE3{wDwouFw<5=q^HO)VCD z{%SB%`)vPyZ;W6xSqE#k)-h_P{)UFRxE0E_M%ml`M2iCSqWB&_FON6-AHAanNAFJ0 zd)Fz-G_IQYO|0In+AsCBKo=XI>VHqz#Z8LpB$|A?=1sm;or99xc|E0pMpK(ezA4&7 z`|-HM+fUV_Ky!lfK4n*PX)7O)IgGjA!Q}(jI;!x_ow&$Qc^`jLH1dL=sbWJ2C7+jU z8t1duWDc>3*q7yQX;L=~uWkeIR&HpCVeoP79I6OY{Xkra${46wk~6+bL@C}FXmUeN+1k_i2uEX0 z@Wydf`FW>!6R65Vv$Hg#DXC0$!{>UaQ2XR2lmLayOdCy*F zWK_N+uRiU+mh&Ph>+giJu6Naz{Ml8tz2n+E?}n(rNV+*Bza_L0u?B_kYjdiq!P!@4 m4`I4EuBvMkD;&UACdC#5s(OcFDHY{D`7odqlnqJ_TmK7}98~52 diff --git a/dev/containers.unix/CCUnix/Infix/index.html b/dev/containers.unix/CCUnix/Infix/index.html deleted file mode 100644 index f990dc03..00000000 --- a/dev/containers.unix/CCUnix/Infix/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Infix (containers.unix.CCUnix.Infix)

Module CCUnix.Infix

val (?|) : ('a, Buffer.t, unit, call_result) Pervasives.format4 ‑> 'a

Infix version of call.

  • Since: 0.11
val (?|&) : ('a, Buffer.t, unit, async_call_result) Pervasives.format4 ‑> 'a

Infix version of async_call.

  • Since: 0.11
\ No newline at end of file diff --git a/dev/containers.unix/CCUnix/index.html b/dev/containers.unix/CCUnix/index.html deleted file mode 100644 index c901d5b9..00000000 --- a/dev/containers.unix/CCUnix/index.html +++ /dev/null @@ -1,18 +0,0 @@ - -CCUnix (containers.unix.CCUnix)

Module CCUnix

High-level Functions on top of Unix

Some useful functions built on top of Unix.

status: unstable

  • Since: 0.10
type 'a or_error = ('a, string) Result.result
type 'a gen = unit ‑> 'a option

Calling Commands

val escape_str : string ‑> string

Escape a string so it can be a shell argument.

type call_result = < stdout : string; stderr : string; status : Unix.process_status; errcode : int; >
val call_full : ?⁠bufsize:int ‑> ?⁠stdin:[ `Gen of string gen | `Str of string ] ‑> ?⁠env:string array ‑> ('a, Buffer.t, unit, call_result) Pervasives.format4 ‑> 'a

call_full cmd wraps the result of Unix.open_process_full cmd into an -object. It reads the full stdout and stderr of the subprocess before -returning.

  • Parameter stdin: if provided, the generator or string is consumed and fed to -the subprocess input channel, which is then closed.
  • Parameter bufsize: buffer size used to read stdout and stderr.
  • Parameter env: environment to run the command in.
val call : ?⁠bufsize:int ‑> ?⁠stdin:[ `Gen of string gen | `Str of string ] ‑> ?⁠env:string array ‑> ('a, Buffer.t, unit, string * string * int) Pervasives.format4 ‑> 'a

call cmd is similar to call_full cmd but returns -a tuple stdout, stderr, errcode instead of an object.

val call_stdout : ?⁠bufsize:int ‑> ?⁠stdin:[ `Gen of string gen | `Str of string ] ‑> ?⁠env:string array ‑> ('a, Buffer.t, unit, string) Pervasives.format4 ‑> 'a
type line = string
type async_call_result = < stdout : line gen; stderr : line gen; stdin : line ‑> unit; close_in : unit; close_err : unit; close_out : unit; close_all : unit; wait : Unix.process_status; wait_errcode : int; >

A subprocess for interactive usage (read/write channels line by line)

  • Since: 0.11
val async_call : ?⁠env:string array ‑> ('a, Buffer.t, unit, async_call_result) Pervasives.format4 ‑> 'a

Spawns a subprocess, like call, but the subprocess's channels are -line generators and line sinks (for stdin). -If p is async_call "cmd", then p#wait waits for the subprocess -to die. Channels can be closed independently.

  • Since: 0.11

Accessors

  • Since: 0.11
val stdout : < stdout : 'a; .. > ‑> 'a
val stderr : < stderr : 'a; .. > ‑> 'a
val status : < status : 'a; .. > ‑> 'a
val errcode : < errcode : 'a; .. > ‑> 'a

Simple IO

val with_in : ?⁠mode:int ‑> ?⁠flags:Unix.open_flag list ‑> string ‑> f:(Pervasives.in_channel ‑> 'a) ‑> 'a

Open an input file with the given optional flag list, calls the function -on the input channel. When the function raises or returns, the -channel is closed.

  • Parameter flags: opening flags. Unix.O_RDONLY is used in any cases.
  • Since: 0.16
val with_out : ?⁠mode:int ‑> ?⁠flags:Unix.open_flag list ‑> string ‑> f:(Pervasives.out_channel ‑> 'a) ‑> 'a

Same as with_in but for an output channel.

  • Parameter flags: opening flags (default [Unix.O_CREAT; Unix.O_TRUNC]) -Unix.O_WRONLY is used in any cases.
  • Since: 0.16
val with_process_in : string ‑> f:(Pervasives.in_channel ‑> 'a) ‑> 'a

Open a subprocess and obtain a handle to its stdout. -

      CCUnix.with_process_in "ls /tmp" ~f:CCIO.read_lines_l;;
  • Since: 0.16
val with_process_out : string ‑> f:(Pervasives.out_channel ‑> 'a) ‑> 'a

Open a subprocess and obtain a handle to its stdin.

  • Since: 0.16
type process_full = < stdin : Pervasives.out_channel; stdout : Pervasives.in_channel; stderr : Pervasives.in_channel; close : Unix.process_status; >

Handle to a subprocess.

  • Since: 0.16
val with_process_full : ?⁠env:string array ‑> string ‑> f:(process_full ‑> 'a) ‑> 'a

Open a subprocess and obtain a handle to its channels.

  • Parameter env: environment to pass to the subprocess.
  • Since: 0.16
val with_connection : Unix.sockaddr ‑> f:(Pervasives.in_channel ‑> Pervasives.out_channel ‑> 'a) ‑> 'a

Wrap Unix.open_connection with a handler.

  • Since: 0.16
exception ExitServer
val establish_server : Unix.sockaddr ‑> f:(Pervasives.in_channel ‑> Pervasives.out_channel ‑> _) ‑> unit

Listen on the address and calls the handler in a blocking fashion. -Using Thread is recommended if handlers might take time. -The callback should raise ExitServer to stop the loop.

  • Since: 0.16
val with_file_lock : kind:[ `Read | `Write ] ‑> string ‑> (unit ‑> 'a) ‑> 'a

with_file_lock ~kind filename f puts a lock on the offset 0 -of the file named filename, calls f and returns its result after -the file is unlocked. If f () raises an exception the exception is -re-raised after the file is unlocked.

  • Parameter kind: specifies whether the lock is read-only or read-write.
  • Since: 1.2

Infix Functions

module Infix : sig ... end
include module type of Infix
val (?|) : ('a, Buffer.t, unit, call_result) Pervasives.format4 ‑> 'a

Infix version of call.

  • Since: 0.11
val (?|&) : ('a, Buffer.t, unit, async_call_result) Pervasives.format4 ‑> 'a

Infix version of async_call.

  • Since: 0.11
\ No newline at end of file diff --git a/dev/containers.unix/index-generated.mld b/dev/containers.unix/index-generated.mld deleted file mode 100644 index adee15d3..00000000 --- a/dev/containers.unix/index-generated.mld +++ /dev/null @@ -1,2 +0,0 @@ -{1 Library containers.unix} -This library exposes the following toplevel modules: {!modules:CCUnix}. \ No newline at end of file diff --git a/dev/containers.unix/index.html b/dev/containers.unix/index.html deleted file mode 100644 index 39b33277..00000000 --- a/dev/containers.unix/index.html +++ /dev/null @@ -1,3 +0,0 @@ - -index (containers.unix.index)

Library containers.unix

-This library exposes the following toplevel modules:

CCUnix

.

\ No newline at end of file diff --git a/dev/containers.unix/page-index.odoc b/dev/containers.unix/page-index.odoc deleted file mode 100644 index f267064f09f27102037cc16029d0b93c3460c668..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 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 UGyP$e9m5hlhTcxW!CT?~0Iynv@&Et; diff --git a/dev/containers.data/CCBV/.jbuilder-keep b/dev/containers/CCArray/.dune-keep similarity index 100% rename from dev/containers.data/CCBV/.jbuilder-keep rename to dev/containers/CCArray/.dune-keep diff --git a/dev/containers/CCArray/Infix/index.html b/dev/containers/CCArray/Infix/index.html new file mode 100644 index 00000000..7dda9f76 --- /dev/null +++ b/dev/containers/CCArray/Infix/index.html @@ -0,0 +1,2 @@ + +Infix (containers.CCArray.Infix)

Module CCArray.Infix

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

a >>= f is the infix version of flat_map.

val (>>|) : 'a t -> ('a -> 'b) -> 'b t

a >>| f is the infix version of map.

since
0.8
val (>|=) : 'a t -> ('a -> 'b) -> 'b t

a >|= f is the infix version of map.

since
0.8
val (--) : int -> int -> int t

x -- y creates an array containing integers in the range x .. y. Bounds included.

val (--^) : int -> int -> int t

x --^ y creates an array containing integers in the range x .. y. Right bound excluded.

since
0.17
\ No newline at end of file diff --git a/dev/containers/CCArray/index.html b/dev/containers/CCArray/index.html index a503b174..ec83a1a0 100644 --- a/dev/containers/CCArray/index.html +++ b/dev/containers/CCArray/index.html @@ -1,2 +1,2 @@ -CCArray (containers.CCArray)

Module CCArray

Array utils

type 'a sequence = ('a -> unit) -> unit
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a gen = unit -> 'a option
type 'a equal = 'a -> 'a -> bool
type 'a ord = 'a -> 'a -> int
type 'a random_gen = Random.State.t -> 'a
type 'a printer = Format.formatter -> 'a -> unit

Arrays

include module type of Array
val length : 'a array -> int
val get : 'a array -> int -> 'a
val set : 'a array -> int -> 'a -> unit
val make : int -> 'a -> 'a array
val create : int -> 'a -> 'a array
val create_float : int -> float array
val make_float : int -> float array
val init : int -> (int -> 'a) -> 'a array
val make_matrix : int -> int -> 'a -> 'a array array
val create_matrix : int -> int -> 'a -> 'a array array
val append : 'a array -> 'a array -> 'a array
val concat : 'a array list -> 'a array
val sub : 'a array -> int -> int -> 'a array
val copy : 'a array -> 'a array
val fill : 'a array -> int -> int -> 'a -> unit
val blit : 'a array -> int -> 'a array -> int -> int -> unit
val to_list : 'a array -> 'a list
val of_list : 'a list -> 'a array
val iter : ('a -> unit) -> 'a array -> unit
val iteri : (int -> 'a -> unit) -> 'a array -> unit
val map : ('a -> 'b) -> 'a array -> 'b array
val mapi : (int -> 'a -> 'b) -> 'a array -> 'b array
val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b array -> 'a
val fold_right : ('b -> 'a -> 'a) -> 'b array -> 'a -> 'a
val iter2 : ('a -> 'b -> unit) -> 'a array -> 'b array -> unit
val map2 : ('a -> 'b -> 'c) -> 'a array -> 'b array -> 'c array
val for_all : ('a -> bool) -> 'a array -> bool
val exists : ('a -> bool) -> 'a array -> bool
val mem : 'a -> 'a array -> bool
val memq : 'a -> 'a array -> bool
val sort : ('a -> 'a -> int) -> 'a array -> unit
val stable_sort : ('a -> 'a -> int) -> 'a array -> unit
val fast_sort : ('a -> 'a -> int) -> 'a array -> unit
val unsafe_get : 'a array -> int -> 'a
val unsafe_set : 'a array -> int -> 'a -> unit
module Floatarray : sig ... end
type 'a t = 'a array

The type for arrays

val empty : 'a t

empty is the empty array, physically equal to ||.

val equal : 'a equal -> 'a t equal

equal eq a1 a2 is true if the lengths of a1 and a2 are the same and if their corresponding elements test equal, using eq.

val compare : 'a ord -> 'a t ord

compare cmp a1 a2 compares arrays a1 and a2 using the function comparison cmp.

val swap : 'a t -> int -> int -> unit

swap a i j swaps elements at indices i and j.

since
1.4
val get : 'a t -> int -> 'a

get a n returns the element number n of array a. The first element has number 0. The last element has number length a - 1. You can also write a.(n) instead of get a n.

Raise Invalid_argument "index out of bounds" if n is outside the range 0 to (length a - 1).

val get_safe : 'a t -> int -> 'a option

get_safe a i returns Some a.(i) if i is a valid index.

since
0.18
val set : 'a t -> int -> 'a -> unit

set a n x modifies array a in place, replacing element number n with x. You can also write a.(n) <- x instead of set a n x.

Raise Invalid_argument "index out of bounds" if n is outside the range 0 to length a - 1.

val length : _ t -> int

length a returns the length (number of elements) of the given array a.

val fold : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a

fold f init a computes f (... (f (f init a.(0)) a.(1)) ...) a.(n-1), where n is the length of the array a.

val foldi : ('a -> int -> 'b -> 'a) -> 'a -> 'b t -> 'a

foldi f init a is just like fold, but it also passes in the index of each element as the second argument to the folded function f.

val fold_while : ('a -> 'b -> 'a * [ `Stop | `Continue ]) -> 'a -> 'b t -> 'a

fold_while f init a folds left on array a until a stop condition via ('a, `Stop) is indicated by the accumulator.

since
0.8
val fold_map : ('acc -> 'a -> 'acc * 'b) -> 'acc -> 'a t -> 'acc * 'b t

fold_map f init a is a fold_left-like function, but it also maps the array to another array.

since
1.2, but only
since
2.1 with labels
val scan_left : ('acc -> 'a -> 'acc) -> 'acc -> 'a t -> 'acc t

scan_left f init a returns the array [|init; f init x0; f (f init a.(0)) a.(1); …|] .

since
1.2, but only
since
2.1 with labels
val iter : ('a -> unit) -> 'a t -> unit

iter f a applies function f in turn to all elements of a. It is equivalent to f a.(0); f a.(1); ...; f a.(length a - 1); ().

val iteri : (int -> 'a -> unit) -> 'a t -> unit

iteri f a is like iter, but the function f is applied with the index of the element as first argument, and the element itself as second argument.

val blit : 'a t -> int -> 'a t -> int -> int -> unit

blit a1 o1 a2 o2 len copies len elements from array a1, starting at element number o1, to array a2, starting at element number o2. It works correctly even if a1 and a2 are the same array, and the source and destination chunks overlap.

Raise Invalid_argument "CCArray.blit" if o1 and len do not designate a valid subarray of a1, or if o2 and len do not designate a valid subarray of a2.

val reverse_in_place : 'a t -> unit

reverse_in_place a reverses the array a in place.

val sorted : ('a -> 'a -> int) -> 'a t -> 'a array

sorted f a makes a copy of a and sorts it with f.

since
1.0
val sort_indices : ('a -> 'a -> int) -> 'a t -> int array

sort_indices f a returns a new array b, with the same length as a, such that b.(i) is the index at which the i-th element of sorted f a appears in a. a is not modified.

In other words, map (fun i -> a.(i)) (sort_indices f a) = sorted f a. sort_indices yields the inverse permutation of sort_ranking.

since
1.0
val sort_ranking : ('a -> 'a -> int) -> 'a t -> int array

sort_ranking f a returns a new array b, with the same length as a, such that b.(i) is the index at which the i-th element of a appears in sorted f a. a is not modified.

In other words, map (fun i -> (sorted f a).(i)) (sort_ranking f a) = a. sort_ranking yields the inverse permutation of sort_indices.

In the absence of duplicate elements in a, we also have lookup_exn a.(i) (sorted a) = (sorted_ranking a).(i).

since
1.0
val find_map : ('a -> 'b option) -> 'a t -> 'b option

find_map f a returns Some y if there is an element x such that f x = Some y. Otherwise returns None.

since
1.3, but only
since
2.1 with labels
val find : ('a -> 'b option) -> 'a t -> 'b option

find f a is an alias to find_map.

deprecated

since 1.3, use find_map instead. The version with labels is

deprecated

since 2.1, use find_map instead.

val find_map_i : (int -> 'a -> 'b option) -> 'a t -> 'b option

find_map_i f a is like find_map, but the index of the element is also passed to the predicate function f.

since
1.3, but only
since
2.1 with labels
val findi : (int -> 'a -> 'b option) -> 'a t -> 'b option

findi f a is an alias to find_map_i.

since
0.3.4
deprecated

since 1.3, use find_map instead. The version with labels is

deprecated

since 2.1, use find_map instead.

val find_idx : ('a -> bool) -> 'a t -> (int * 'a) option

find_idx f a returns Some (i,x) where x is the i-th element of a, and f x holds. Otherwise returns None.

since
0.3.4
val lookup : cmp:'a ord -> 'a -> 'a t -> int option

lookup ~cmp key a lookups the index of some key key in a sorted array a. Undefined behavior if the array a is not sorted wrt ~cmp. Complexity: O(log (n)) (dichotomic search).

returns

None if the key key is not present, or Some i (i the index of the key) otherwise.

val lookup_exn : cmp:'a ord -> 'a -> 'a t -> int

lookup_exn ~cmp key a is like lookup, but

raises Not_found

if the key key is not present.

val bsearch : cmp:('a -> 'a -> int) -> 'a -> 'a t -> [ `All_lower | `All_bigger | `Just_after of int | `Empty | `At of int ]

bsearch ~cmp key a finds the index of the object key in the array a, provided a is sorted using ~cmp. If the array is not sorted, the result is not specified (may raise Invalid_argument).

Complexity: O(log n) where n is the length of the array a (dichotomic search).

returns
  • `At i if cmp a.(i) key = 0 (for some i).
  • `All_lower if all elements of a are lower than key.
  • `All_bigger if all elements of a are bigger than key.
  • `Just_after i if a.(i) < key < a.(i+1).
  • `Empty if the array a is empty.
raises Invalid_argument

if the array is found to be unsorted w.r.t cmp.

since
0.13
val for_all : ('a -> bool) -> 'a t -> bool

for_all f [|a1; ...; an|] is true if all elements of the array satisfy the predicate f. That is, it returns (f a1) && (f a2) && ... && (f an).

val for_all2 : ('a -> 'b -> bool) -> 'a t -> 'b t -> bool

for_all2 f [|a1; ...; an|] [|b1; ...; bn|] is true if each pair of elements ai bi satisfies the predicate f. That is, it returns (f a1 b1) && (f a2 b2) && ... && (f an bn).

raises Invalid_argument

if arrays have distinct lengths. Allow different types.

since
0.20
val exists : ('a -> bool) -> 'a t -> bool

exists f [|a1; ...; an|] is true if at least one element of the array satisfies the predicate f. That is, it returns (f a1) || (f a2) || ... || (f an).

val exists2 : ('a -> 'b -> bool) -> 'a t -> 'b t -> bool

exists2 f [|a1; ...; an|] [|b1; ...; bn|] is true if any pair of elements ai bi satisfies the predicate f. That is, it returns (f a1 b1) || (f a2 b2) || ... || (f an bn).

raises Invalid_argument

if arrays have distinct lengths. Allow different types.

since
0.20
val fold2 : ('acc -> 'a -> 'b -> 'acc) -> 'acc -> 'a t -> 'b t -> 'acc

fold2 f init a b fold on two arrays a and b stepwise. It computes f (... (f init a1 b1)...) an bn.

raises Invalid_argument

if a and b have distinct lengths.

since
0.20
val iter2 : ('a -> 'b -> unit) -> 'a t -> 'b t -> unit

iter2 f a b iterates on the two arrays a and b stepwise. It is equivalent to f a0 b0; ...; f a.(length a - 1) b.(length b - 1); ().

raises Invalid_argument

if a and b have distinct lengths.

since
0.20
val shuffle : 'a t -> unit

shuffle a randomly shuffles the array a, in place.

val shuffle_with : Random.State.t -> 'a t -> unit

shuffle_with rs a randomly shuffles the array a (like shuffle) but a specialized random state rs is used to control the random numbers being produced during shuffling (for reproducibility).

val random_choose : 'a t -> 'a random_gen

random_choose a rs randomly chooses an element of a.

raises Not_found

if the array/slice is empty.

val to_seq : 'a t -> 'a sequence

to_seq a returns a sequence of the elements of an array a. The input array a is shared with the sequence and modification of it will result in modification of the sequence.

val to_gen : 'a t -> 'a gen

to_gen a returns a gen of the elements of an array a.

val to_klist : 'a t -> 'a klist

to_klist returns a klist of the elements of an array a.

IO

val pp : ?⁠sep:string -> 'a printer -> 'a t printer

pp ~sep pp_item ppf a formats the array a on ppf. Each element is formatted with pp_item and elements are separated by sep (defaults to ", ").

val pp_i : ?⁠sep:string -> (int -> 'a printer) -> 'a t printer

pp_i ~sep pp_item ppf a prints the array a on ppf. The printing function pp_item is giving both index and element. Elements are separated by sep (defaults to ", ").

val map : ('a -> 'b) -> 'a t -> 'b t

map f a applies function f to all elements of a, and builds an array with the results returned by f: [| f a.(0); f a.(1); ...; f a.(length a - 1) |].

val map2 : ('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t

map2 f a b applies function f to all elements of a and b, and builds an array with the results returned by f: [| f a.(0) b.(0); ...; f a.(length a - 1) b.(length b - 1)|].

raises Invalid_argument

if a and b have distinct lengths.

since
0.20
val rev : 'a t -> 'a t

rev a copies the array a and reverses it in place.

since
0.20
val filter : ('a -> bool) -> 'a t -> 'a t

filter f a filters elements out of the array a. Only the elements satisfying the given predicate f will be kept.

val filter_map : ('a -> 'b option) -> 'a t -> 'b t

filter_map f [|a1; ...; an|] calls (f a1) ... (f an) and returns an array b consisting of all elements bi such as f ai = Some bi. When f returns None, the corresponding element of a is discarded.

val flat_map : ('a -> 'b t) -> 'a t -> 'b array

flat_map f a transforms each element of a into an array, then flattens.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

a >>= f is the infix version of flat_map.

val (>>|) : 'a t -> ('a -> 'b) -> 'b t

a >>| f is the infix version of map.

since
0.8
val (>|=) : 'a t -> ('a -> 'b) -> 'b t

a >|= f is the infix version of map.

since
0.8
val except_idx : 'a t -> int -> 'a list

except_idx a i removes the element of a at given index i, and returns the list of the other elements.

val (--) : int -> int -> int t

x -- y creates an array containing integers in the range x .. y. Bounds included.

val (--^) : int -> int -> int t

x --^ y creates an array containing integers in the range x .. y. Right bound excluded.

since
0.17
val random : 'a random_gen -> 'a t random_gen
val random_non_empty : 'a random_gen -> 'a t random_gen
val random_len : int -> 'a random_gen -> 'a t random_gen

Generic Functions

module type MONO_ARRAY = sig ... end
val sort_generic : (module MONO_ARRAY with type elt = 'elt and type t = 'arr) -> cmp:('elt -> 'elt -> int) -> 'arr -> unit

sort_generic (module M) ~cmp a sorts the array a, without allocating (eats stack space though). Performance might be lower than Array.sort.

since
0.14
\ No newline at end of file +CCArray (containers.CCArray)

Module CCArray

Array utils

type 'a sequence = ('a -> unit) -> unit
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a gen = unit -> 'a option
type 'a equal = 'a -> 'a -> bool
type 'a ord = 'a -> 'a -> int
type 'a random_gen = Random.State.t -> 'a
type 'a printer = Format.formatter -> 'a -> unit

Arrays

include module type of CCShimsArray_
include Array
val length : 'a array -> int
val get : 'a array -> int -> 'a
val set : 'a array -> int -> 'a -> unit
val make : int -> 'a -> 'a array
val create : int -> 'a -> 'a array
val create_float : int -> float array
val make_float : int -> float array
val init : int -> (int -> 'a) -> 'a array
val make_matrix : int -> int -> 'a -> 'a array array
val create_matrix : int -> int -> 'a -> 'a array array
val append : 'a array -> 'a array -> 'a array
val concat : 'a array list -> 'a array
val sub : 'a array -> int -> int -> 'a array
val copy : 'a array -> 'a array
val fill : 'a array -> int -> int -> 'a -> unit
val blit : 'a array -> int -> 'a array -> int -> int -> unit
val to_list : 'a array -> 'a list
val of_list : 'a list -> 'a array
val iter : ('a -> unit) -> 'a array -> unit
val iteri : (int -> 'a -> unit) -> 'a array -> unit
val map : ('a -> 'b) -> 'a array -> 'b array
val mapi : (int -> 'a -> 'b) -> 'a array -> 'b array
val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b array -> 'a
val fold_right : ('b -> 'a -> 'a) -> 'b array -> 'a -> 'a
val iter2 : ('a -> 'b -> unit) -> 'a array -> 'b array -> unit
val map2 : ('a -> 'b -> 'c) -> 'a array -> 'b array -> 'c array
val for_all : ('a -> bool) -> 'a array -> bool
val exists : ('a -> bool) -> 'a array -> bool
val mem : 'a -> 'a array -> bool
val memq : 'a -> 'a array -> bool
val sort : ('a -> 'a -> int) -> 'a array -> unit
val stable_sort : ('a -> 'a -> int) -> 'a array -> unit
val fast_sort : ('a -> 'a -> int) -> 'a array -> unit
val unsafe_get : 'a array -> int -> 'a
val unsafe_set : 'a array -> int -> 'a -> unit
module Floatarray = Array.Floatarray
type 'a t = 'a array
val empty : 'a t

empty is the empty array, physically equal to ||.

val equal : 'a equal -> 'a t equal

equal eq a1 a2 is true if the lengths of a1 and a2 are the same and if their corresponding elements test equal, using eq.

val compare : 'a ord -> 'a t ord

compare cmp a1 a2 compares arrays a1 and a2 using the function comparison cmp.

val swap : 'a t -> int -> int -> unit

swap a i j swaps elements at indices i and j.

since
1.4
val get : 'a t -> int -> 'a

get a n returns the element number n of array a. The first element has number 0. The last element has number length a - 1. You can also write a.(n) instead of get a n.

Raise Invalid_argument "index out of bounds" if n is outside the range 0 to (length a - 1).

val get_safe : 'a t -> int -> 'a option

get_safe a i returns Some a.(i) if i is a valid index.

since
0.18
val set : 'a t -> int -> 'a -> unit

set a n x modifies array a in place, replacing element number n with x. You can also write a.(n) <- x instead of set a n x.

Raise Invalid_argument "index out of bounds" if n is outside the range 0 to length a - 1.

val length : _ t -> int

length a returns the length (number of elements) of the given array a.

val fold : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a

fold f init a computes f (... (f (f init a.(0)) a.(1)) ...) a.(n-1), where n is the length of the array a.

val foldi : ('a -> int -> 'b -> 'a) -> 'a -> 'b t -> 'a

foldi f init a is just like fold, but it also passes in the index of each element as the second argument to the folded function f.

val fold_while : ('a -> 'b -> 'a * [ `Stop | `Continue ]) -> 'a -> 'b t -> 'a

fold_while f init a folds left on array a until a stop condition via ('a, `Stop) is indicated by the accumulator.

since
0.8
val fold_map : ('acc -> 'a -> 'acc * 'b) -> 'acc -> 'a t -> 'acc * 'b t

fold_map f init a is a fold_left-like function, but it also maps the array to another array.

since
1.2, but only
since
2.1 with labels
val scan_left : ('acc -> 'a -> 'acc) -> 'acc -> 'a t -> 'acc t

scan_left f init a returns the array [|init; f init x0; f (f init a.(0)) a.(1); …|] .

since
1.2, but only
since
2.1 with labels
val iter : ('a -> unit) -> 'a t -> unit

iter f a applies function f in turn to all elements of a. It is equivalent to f a.(0); f a.(1); ...; f a.(length a - 1); ().

val iteri : (int -> 'a -> unit) -> 'a t -> unit

iteri f a is like iter, but the function f is applied with the index of the element as first argument, and the element itself as second argument.

val blit : 'a t -> int -> 'a t -> int -> int -> unit

blit a1 o1 a2 o2 len copies len elements from array a1, starting at element number o1, to array a2, starting at element number o2. It works correctly even if a1 and a2 are the same array, and the source and destination chunks overlap.

Raise Invalid_argument "CCArray.blit" if o1 and len do not designate a valid subarray of a1, or if o2 and len do not designate a valid subarray of a2.

val reverse_in_place : 'a t -> unit

reverse_in_place a reverses the array a in place.

val sorted : ('a -> 'a -> int) -> 'a t -> 'a array

sorted f a makes a copy of a and sorts it with f.

since
1.0
val sort_indices : ('a -> 'a -> int) -> 'a t -> int array

sort_indices f a returns a new array b, with the same length as a, such that b.(i) is the index at which the i-th element of sorted f a appears in a. a is not modified.

In other words, map (fun i -> a.(i)) (sort_indices f a) = sorted f a. sort_indices yields the inverse permutation of sort_ranking.

since
1.0
val sort_ranking : ('a -> 'a -> int) -> 'a t -> int array

sort_ranking f a returns a new array b, with the same length as a, such that b.(i) is the index at which the i-th element of a appears in sorted f a. a is not modified.

In other words, map (fun i -> (sorted f a).(i)) (sort_ranking f a) = a. sort_ranking yields the inverse permutation of sort_indices.

In the absence of duplicate elements in a, we also have lookup_exn a.(i) (sorted a) = (sorted_ranking a).(i).

since
1.0
val find_map : ('a -> 'b option) -> 'a t -> 'b option

find_map f a returns Some y if there is an element x such that f x = Some y. Otherwise returns None.

since
1.3, but only
since
2.1 with labels
val find : ('a -> 'b option) -> 'a t -> 'b option

find f a is an alias to find_map.

deprecated

since 1.3, use find_map instead. The version with labels is

deprecated

since 2.1, use find_map instead.

val find_map_i : (int -> 'a -> 'b option) -> 'a t -> 'b option

find_map_i f a is like find_map, but the index of the element is also passed to the predicate function f.

since
1.3, but only
since
2.1 with labels
val findi : (int -> 'a -> 'b option) -> 'a t -> 'b option

findi f a is an alias to find_map_i.

since
0.3.4
deprecated

since 1.3, use find_map instead. The version with labels is

deprecated

since 2.1, use find_map instead.

val find_idx : ('a -> bool) -> 'a t -> (int * 'a) option

find_idx f a returns Some (i,x) where x is the i-th element of a, and f x holds. Otherwise returns None.

since
0.3.4
val lookup : cmp:'a ord -> 'a -> 'a t -> int option

lookup ~cmp key a lookups the index of some key key in a sorted array a. Undefined behavior if the array a is not sorted wrt ~cmp. Complexity: O(log (n)) (dichotomic search).

returns

None if the key key is not present, or Some i (i the index of the key) otherwise.

val lookup_exn : cmp:'a ord -> 'a -> 'a t -> int

lookup_exn ~cmp key a is like lookup, but

raises Not_found

if the key key is not present.

val bsearch : cmp:('a -> 'a -> int) -> 'a -> 'a t -> [ `All_lower | `All_bigger | `Just_after of int | `Empty | `At of int ]

bsearch ~cmp key a finds the index of the object key in the array a, provided a is sorted using ~cmp. If the array is not sorted, the result is not specified (may raise Invalid_argument).

Complexity: O(log n) where n is the length of the array a (dichotomic search).

returns
  • `At i if cmp a.(i) key = 0 (for some i).
  • `All_lower if all elements of a are lower than key.
  • `All_bigger if all elements of a are bigger than key.
  • `Just_after i if a.(i) < key < a.(i+1).
  • `Empty if the array a is empty.
raises Invalid_argument

if the array is found to be unsorted w.r.t cmp.

since
0.13
val for_all : ('a -> bool) -> 'a t -> bool

for_all f [|a1; ...; an|] is true if all elements of the array satisfy the predicate f. That is, it returns (f a1) && (f a2) && ... && (f an).

val for_all2 : ('a -> 'b -> bool) -> 'a t -> 'b t -> bool

for_all2 f [|a1; ...; an|] [|b1; ...; bn|] is true if each pair of elements ai bi satisfies the predicate f. That is, it returns (f a1 b1) && (f a2 b2) && ... && (f an bn).

raises Invalid_argument

if arrays have distinct lengths. Allow different types.

since
0.20
val exists : ('a -> bool) -> 'a t -> bool

exists f [|a1; ...; an|] is true if at least one element of the array satisfies the predicate f. That is, it returns (f a1) || (f a2) || ... || (f an).

val exists2 : ('a -> 'b -> bool) -> 'a t -> 'b t -> bool

exists2 f [|a1; ...; an|] [|b1; ...; bn|] is true if any pair of elements ai bi satisfies the predicate f. That is, it returns (f a1 b1) || (f a2 b2) || ... || (f an bn).

raises Invalid_argument

if arrays have distinct lengths. Allow different types.

since
0.20
val fold2 : ('acc -> 'a -> 'b -> 'acc) -> 'acc -> 'a t -> 'b t -> 'acc

fold2 f init a b fold on two arrays a and b stepwise. It computes f (... (f init a1 b1)...) an bn.

raises Invalid_argument

if a and b have distinct lengths.

since
0.20
val iter2 : ('a -> 'b -> unit) -> 'a t -> 'b t -> unit

iter2 f a b iterates on the two arrays a and b stepwise. It is equivalent to f a0 b0; ...; f a.(length a - 1) b.(length b - 1); ().

raises Invalid_argument

if a and b have distinct lengths.

since
0.20
val shuffle : 'a t -> unit

shuffle a randomly shuffles the array a, in place.

val shuffle_with : Random.State.t -> 'a t -> unit

shuffle_with rs a randomly shuffles the array a (like shuffle) but a specialized random state rs is used to control the random numbers being produced during shuffling (for reproducibility).

val random_choose : 'a t -> 'a random_gen

random_choose a rs randomly chooses an element of a.

raises Not_found

if the array/slice is empty.

val to_string : ?⁠sep:string -> ('a -> string) -> 'a array -> string

to_string ~sep item_to_string a print a to a string using sep as a separator between elements of a.

since
NEXT_RELEASE
val to_seq : 'a t -> 'a sequence

to_seq a returns a sequence of the elements of an array a. The input array a is shared with the sequence and modification of it will result in modification of the sequence.

val to_gen : 'a t -> 'a gen

to_gen a returns a gen of the elements of an array a.

val to_klist : 'a t -> 'a klist

to_klist returns a klist of the elements of an array a.

IO

val pp : ?⁠sep:string -> 'a printer -> 'a t printer

pp ~sep pp_item ppf a formats the array a on ppf. Each element is formatted with pp_item and elements are separated by sep (defaults to ", ").

val pp_i : ?⁠sep:string -> (int -> 'a printer) -> 'a t printer

pp_i ~sep pp_item ppf a prints the array a on ppf. The printing function pp_item is giving both index and element. Elements are separated by sep (defaults to ", ").

val map : ('a -> 'b) -> 'a t -> 'b t

map f a applies function f to all elements of a, and builds an array with the results returned by f: [| f a.(0); f a.(1); ...; f a.(length a - 1) |].

val map2 : ('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t

map2 f a b applies function f to all elements of a and b, and builds an array with the results returned by f: [| f a.(0) b.(0); ...; f a.(length a - 1) b.(length b - 1)|].

raises Invalid_argument

if a and b have distinct lengths.

since
0.20
val rev : 'a t -> 'a t

rev a copies the array a and reverses it in place.

since
0.20
val filter : ('a -> bool) -> 'a t -> 'a t

filter f a filters elements out of the array a. Only the elements satisfying the given predicate f will be kept.

val filter_map : ('a -> 'b option) -> 'a t -> 'b t

filter_map f [|a1; ...; an|] calls (f a1) ... (f an) and returns an array b consisting of all elements bi such as f ai = Some bi. When f returns None, the corresponding element of a is discarded.

val flat_map : ('a -> 'b t) -> 'a t -> 'b array

flat_map f a transforms each element of a into an array, then flattens.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

a >>= f is the infix version of flat_map.

val (>>|) : 'a t -> ('a -> 'b) -> 'b t

a >>| f is the infix version of map.

since
0.8
val (>|=) : 'a t -> ('a -> 'b) -> 'b t

a >|= f is the infix version of map.

since
0.8
val except_idx : 'a t -> int -> 'a list

except_idx a i removes the element of a at given index i, and returns the list of the other elements.

val (--) : int -> int -> int t

x -- y creates an array containing integers in the range x .. y. Bounds included.

val (--^) : int -> int -> int t

x --^ y creates an array containing integers in the range x .. y. Right bound excluded.

since
0.17
val random : 'a random_gen -> 'a t random_gen
val random_non_empty : 'a random_gen -> 'a t random_gen
val random_len : int -> 'a random_gen -> 'a t random_gen

Generic Functions

module type MONO_ARRAY = sig ... end
val sort_generic : (module MONO_ARRAY with type elt = 'elt and type t = 'arr) -> cmp:('elt -> 'elt -> int) -> 'arr -> unit

sort_generic (module M) ~cmp a sorts the array a, without allocating (eats stack space though). Performance might be lower than Array.sort.

since
0.14

Infix Operators

It is convenient to open CCArray.Infix to access the infix operators without cluttering the scope too much.

since
2.7
module Infix : sig ... end
\ No newline at end of file diff --git a/dev/containers/CCArray/module-type-MONO_ARRAY/index.html b/dev/containers/CCArray/module-type-MONO_ARRAY/index.html index db179785..322295c1 100644 --- a/dev/containers/CCArray/module-type-MONO_ARRAY/index.html +++ b/dev/containers/CCArray/module-type-MONO_ARRAY/index.html @@ -1,2 +1,2 @@ -MONO_ARRAY (containers.CCArray.MONO_ARRAY)

Module type CCArray.MONO_ARRAY

type elt
type t
val length : t -> int
val get : t -> int -> elt
val set : t -> int -> elt -> unit
\ No newline at end of file +MONO_ARRAY (containers.CCArray.MONO_ARRAY)

Module type CCArray.MONO_ARRAY

type elt
type t
val length : t -> int
val get : t -> int -> elt
val set : t -> int -> elt -> unit
\ No newline at end of file diff --git a/dev/containers/CCArrayLabels.odoc b/dev/containers/CCArrayLabels.odoc deleted file mode 100644 index 2c30aee55631086430e2add89d8415d5379283ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12065 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 K!@ur?-v1vMY0+;0 diff --git a/dev/containers.data/CCBijection/.jbuilder-keep b/dev/containers/CCArrayLabels/.dune-keep similarity index 100% rename from dev/containers.data/CCBijection/.jbuilder-keep rename to dev/containers/CCArrayLabels/.dune-keep diff --git a/dev/containers/CCArrayLabels/Floatarray/index.html b/dev/containers/CCArrayLabels/Floatarray/index.html new file mode 100644 index 00000000..2fe73663 --- /dev/null +++ b/dev/containers/CCArrayLabels/Floatarray/index.html @@ -0,0 +1,2 @@ + +Floatarray (containers.CCArrayLabels.Floatarray)

Module CCArrayLabels.Floatarray

val create : int -> floatarray
val length : floatarray -> int
val get : floatarray -> int -> float
val set : floatarray -> int -> float -> unit
val unsafe_get : floatarray -> int -> float
val unsafe_set : floatarray -> int -> float -> unit
\ No newline at end of file diff --git a/dev/containers/CCArrayLabels/Infix/index.html b/dev/containers/CCArrayLabels/Infix/index.html new file mode 100644 index 00000000..ca186f53 --- /dev/null +++ b/dev/containers/CCArrayLabels/Infix/index.html @@ -0,0 +1,2 @@ + +Infix (containers.CCArrayLabels.Infix)

Module CCArrayLabels.Infix

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

a >>= f is the infix version of flat_map.

val (>>|) : 'a t -> ('a -> 'b) -> 'b t

a >>| f is the infix version of map.

since
0.8
val (>|=) : 'a t -> ('a -> 'b) -> 'b t

a >|= f is the infix version of map.

since
0.8
val (--) : int -> int -> int t

x -- y creates an array containing integers in the range x .. y. Bounds included.

val (--^) : int -> int -> int t

x --^ y creates an array containing integers in the range x .. y. Right bound excluded.

since
0.17
\ No newline at end of file diff --git a/dev/containers/CCArrayLabels/index.html b/dev/containers/CCArrayLabels/index.html index 7a9edfe8..2d1edb66 100644 --- a/dev/containers/CCArrayLabels/index.html +++ b/dev/containers/CCArrayLabels/index.html @@ -1,2 +1,2 @@ -CCArrayLabels (containers.CCArrayLabels)

Module CCArrayLabels

Array utils

type 'a sequence = ('a -> unit) -> unit
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a gen = unit -> 'a option
type 'a equal = 'a -> 'a -> bool
type 'a ord = 'a -> 'a -> int
type 'a random_gen = Random.State.t -> 'a
type 'a printer = Format.formatter -> 'a -> unit

Arrays

include module type of ArrayLabels
val length : 'a array -> int
val get : 'a array -> int -> 'a
val set : 'a array -> int -> 'a -> unit
val make : int -> 'a -> 'a array
val create : int -> 'a -> 'a array
val init : int -> f:(int -> 'a) -> 'a array
val make_matrix : dimx:int -> dimy:int -> 'a -> 'a array array
val create_matrix : dimx:int -> dimy:int -> 'a -> 'a array array
val append : 'a array -> 'a array -> 'a array
val concat : 'a array list -> 'a array
val sub : 'a array -> pos:int -> len:int -> 'a array
val copy : 'a array -> 'a array
val fill : 'a array -> pos:int -> len:int -> 'a -> unit
val blit : src:'a array -> src_pos:int -> dst:'a array -> dst_pos:int -> len:int -> unit
val to_list : 'a array -> 'a list
val of_list : 'a list -> 'a array
val iter : f:('a -> unit) -> 'a array -> unit
val map : f:('a -> 'b) -> 'a array -> 'b array
val iteri : f:(int -> 'a -> unit) -> 'a array -> unit
val mapi : f:(int -> 'a -> 'b) -> 'a array -> 'b array
val fold_left : f:('a -> 'b -> 'a) -> init:'a -> 'b array -> 'a
val fold_right : f:('b -> 'a -> 'a) -> 'b array -> init:'a -> 'a
val iter2 : f:('a -> 'b -> unit) -> 'a array -> 'b array -> unit
val map2 : f:('a -> 'b -> 'c) -> 'a array -> 'b array -> 'c array
val exists : f:('a -> bool) -> 'a array -> bool
val for_all : f:('a -> bool) -> 'a array -> bool
val mem : 'a -> set:'a array -> bool
val memq : 'a -> set:'a array -> bool
val create_float : int -> float array
val make_float : int -> float array
val sort : cmp:('a -> 'a -> int) -> 'a array -> unit
val stable_sort : cmp:('a -> 'a -> int) -> 'a array -> unit
val fast_sort : cmp:('a -> 'a -> int) -> 'a array -> unit
val unsafe_get : 'a array -> int -> 'a
val unsafe_set : 'a array -> int -> 'a -> unit
module Floatarray : sig ... end
type 'a t = 'a array

The type for arrays

val empty : 'a t

empty is the empty array, physically equal to ||.

val equal : 'a equal -> 'a t equal

equal eq a1 a2 is true if the lengths of a1 and a2 are the same and if their corresponding elements test equal, using eq.

val compare : 'a ord -> 'a t ord

compare cmp a1 a2 compares arrays a1 and a2 using the function comparison cmp.

val swap : 'a t -> int -> int -> unit

swap a i j swaps elements at indices i and j.

since
1.4
val get : 'a t -> int -> 'a

get a n returns the element number n of array a. The first element has number 0. The last element has number length a - 1. You can also write a.(n) instead of get a n.

Raise Invalid_argument "index out of bounds" if n is outside the range 0 to (length a - 1).

val get_safe : 'a t -> int -> 'a option

get_safe a i returns Some a.(i) if i is a valid index.

since
0.18
val set : 'a t -> int -> 'a -> unit

set a n x modifies array a in place, replacing element number n with x. You can also write a.(n) <- x instead of set a n x.

Raise Invalid_argument "index out of bounds" if n is outside the range 0 to length a - 1.

val length : _ t -> int

length a returns the length (number of elements) of the given array a.

val fold : f:('a -> 'b -> 'a) -> init:'a -> 'b t -> 'a

fold ~f ~init a computes ~f (... (~f (~f ~init a.(0)) a.(1)) ...) a.(n-1), where n is the length of the array a.

val foldi : f:('a -> int -> 'b -> 'a) -> init:'a -> 'b t -> 'a

foldi ~f ~init a is just like fold, but it also passes in the index of each element as the second argument to the folded function ~f.

val fold_while : f:('a -> 'b -> 'a * [ `Stop | `Continue ]) -> init:'a -> 'b t -> 'a

fold_while ~f ~init a folds left on array a until a stop condition via ('a, `Stop) is indicated by the accumulator.

since
0.8
val fold_map : f:('acc -> 'a -> 'acc * 'b) -> init:'acc -> 'a t -> 'acc * 'b t

fold_map ~f ~init a is a fold_left-like function, but it also maps the array to another array.

since
1.2, but only
since
2.1 with labels
val scan_left : f:('acc -> 'a -> 'acc) -> init:'acc -> 'a t -> 'acc t

scan_left ~f ~init a returns the array [|~init; ~f ~init x0; ~f (~f ~init a.(0)) a.(1); …|] .

since
1.2, but only
since
2.1 with labels
val iter : f:('a -> unit) -> 'a t -> unit

iter ~f a applies function ~f in turn to all elements of a. It is equivalent to ~f a.(0); ~f a.(1); ...; ~f a.(length a - 1); ().

val iteri : f:(int -> 'a -> unit) -> 'a t -> unit

iteri ~f a is like iter, but the function ~f is applied with the index of the element as first argument, and the element itself as second argument.

val blit : 'a t -> int -> 'a t -> int -> int -> unit

blit a1 o1 a2 o2 len copies len elements from array a1, starting at element number o1, to array a2, starting at element number o2. It works correctly even if a1 and a2 are the same array, and the source and destination chunks overlap.

Raise Invalid_argument "CCArray.blit" if o1 and len do not designate a valid subarray of a1, or if o2 and len do not designate a valid subarray of a2.

val reverse_in_place : 'a t -> unit

reverse_in_place a reverses the array a in place.

val sorted : f:('a -> 'a -> int) -> 'a t -> 'a array

sorted ~f a makes a copy of a and sorts it with ~f.

since
1.0
val sort_indices : f:('a -> 'a -> int) -> 'a t -> int array

sort_indices ~f a returns a new array b, with the same length as a, such that b.(i) is the index at which the i-th element of sorted ~f a appears in a. a is not modified.

In other words, map (fun i -> a.(i)) (sort_indices ~f a) = sorted ~f a. sort_indices yields the inverse permutation of sort_ranking.

since
1.0
val sort_ranking : f:('a -> 'a -> int) -> 'a t -> int array

sort_ranking ~f a returns a new array b, with the same length as a, such that b.(i) is the index at which the i-th element of a appears in sorted ~f a. a is not modified.

In other words, map (fun i -> (sorted ~f a).(i)) (sort_ranking ~f a) = a. sort_ranking yields the inverse permutation of sort_indices.

In the absence of duplicate elements in a, we also have lookup_exn a.(i) (sorted a) = (sorted_ranking a).(i).

since
1.0
val find_map : f:('a -> 'b option) -> 'a t -> 'b option

find_map ~f a returns Some y if there is an element x such that ~f x = Some y. Otherwise returns None.

since
1.3, but only
since
2.1 with labels
val find : f:('a -> 'b option) -> 'a t -> 'b option

find ~f a is an alias to find_map.

deprecated

since 1.3, use find_map instead. The version with labels is

deprecated

since 2.1, use find_map instead.

val find_map_i : f:(int -> 'a -> 'b option) -> 'a t -> 'b option

find_map_i ~f a is like find_map, but the index of the element is also passed to the predicate function ~f.

since
1.3, but only
since
2.1 with labels
val findi : f:(int -> 'a -> 'b option) -> 'a t -> 'b option

findi ~f a is an alias to find_map_i.

since
0.3.4
deprecated

since 1.3, use find_map instead. The version with labels is

deprecated

since 2.1, use find_map instead.

val find_idx : f:('a -> bool) -> 'a t -> (int * 'a) option

find_idx ~f a returns Some (i,x) where x is the i-th element of a, and ~f x holds. Otherwise returns None.

since
0.3.4
val lookup : cmp:'a ord -> key:'a -> 'a t -> int option

lookup ~cmp ~key a lookups the index of some key ~key in a sorted array a. Undefined behavior if the array a is not sorted wrt ~cmp. Complexity: O(log (n)) (dichotomic search).

returns

None if the key ~key is not present, or Some i (i the index of the key) otherwise.

val lookup_exn : cmp:'a ord -> key:'a -> 'a t -> int

lookup_exn ~cmp ~key a is like lookup, but

raises Not_found

if the key ~key is not present.

val bsearch : cmp:('a -> 'a -> int) -> key:'a -> 'a t -> [ `All_lower | `All_bigger | `Just_after of int | `Empty | `At of int ]

bsearch ~cmp ~key a finds the index of the object ~key in the array a, provided a is sorted using ~cmp. If the array is not sorted, the result is not specified (may raise Invalid_argument).

Complexity: O(log n) where n is the length of the array a (dichotomic search).

returns
  • `At i if cmp a.(i) key = 0 (for some i).
  • `All_lower if all elements of a are lower than key.
  • `All_bigger if all elements of a are bigger than key.
  • `Just_after i if a.(i) < key < a.(i+1).
  • `Empty if the array a is empty.
raises Invalid_argument

if the array is found to be unsorted w.r.t cmp.

since
0.13
val for_all : f:('a -> bool) -> 'a t -> bool

for_all ~f [|a1; ...; an|] is true if all elements of the array satisfy the predicate ~f. That is, it returns (~f a1) && (~f a2) && ... && (~f an).

val for_all2 : f:('a -> 'b -> bool) -> 'a t -> 'b t -> bool

for_all2 ~f [|a1; ...; an|] [|b1; ...; bn|] is true if each pair of elements ai bi satisfies the predicate ~f. That is, it returns (~f a1 b1) && (~f a2 b2) && ... && (~f an bn).

raises Invalid_argument

if arrays have distinct lengths. Allow different types.

since
0.20
val exists : f:('a -> bool) -> 'a t -> bool

exists ~f [|a1; ...; an|] is true if at least one element of the array satisfies the predicate ~f. That is, it returns (~f a1) || (~f a2) || ... || (~f an).

val exists2 : f:('a -> 'b -> bool) -> 'a t -> 'b t -> bool

exists2 ~f [|a1; ...; an|] [|b1; ...; bn|] is true if any pair of elements ai bi satisfies the predicate ~f. That is, it returns (~f a1 b1) || (~f a2 b2) || ... || (~f an bn).

raises Invalid_argument

if arrays have distinct lengths. Allow different types.

since
0.20
val fold2 : f:('acc -> 'a -> 'b -> 'acc) -> init:'acc -> 'a t -> 'b t -> 'acc

fold2 ~f ~init a b fold on two arrays a and b stepwise. It computes ~f (... (~f ~init a1 b1)...) an bn.

raises Invalid_argument

if a and b have distinct lengths.

since
0.20
val iter2 : f:('a -> 'b -> unit) -> 'a t -> 'b t -> unit

iter2 ~f a b iterates on the two arrays a and b stepwise. It is equivalent to ~f a0 b0; ...; ~f a.(length a - 1) b.(length b - 1); ().

raises Invalid_argument

if a and b have distinct lengths.

since
0.20
val shuffle : 'a t -> unit

shuffle a randomly shuffles the array a, in place.

val shuffle_with : Random.State.t -> 'a t -> unit

shuffle_with rs a randomly shuffles the array a (like shuffle) but a specialized random state rs is used to control the random numbers being produced during shuffling (for reproducibility).

val random_choose : 'a t -> 'a random_gen

random_choose a rs randomly chooses an element of a.

raises Not_found

if the array/slice is empty.

val to_seq : 'a t -> 'a sequence

to_seq a returns a sequence of the elements of an array a. The input array a is shared with the sequence and modification of it will result in modification of the sequence.

val to_gen : 'a t -> 'a gen

to_gen a returns a gen of the elements of an array a.

val to_klist : 'a t -> 'a klist

to_klist returns a klist of the elements of an array a.

IO

val pp : ?⁠sep:string -> 'a printer -> 'a t printer

pp ~sep pp_item ppf a formats the array a on ppf. Each element is formatted with pp_item and elements are separated by sep (defaults to ", ").

val pp_i : ?⁠sep:string -> (int -> 'a printer) -> 'a t printer

pp_i ~sep pp_item ppf a prints the array a on ppf. The printing function pp_item is giving both index and element. Elements are separated by sep (defaults to ", ").

val map : f:('a -> 'b) -> 'a t -> 'b t

map ~f a applies function f to all elements of a, and builds an array with the results returned by ~f: [| ~f a.(0); ~f a.(1); ...; ~f a.(length a - 1) |].

val map2 : f:('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t

map2 ~f a b applies function ~f to all elements of a and b, and builds an array with the results returned by ~f: [| ~f a.(0) b.(0); ...; ~f a.(length a - 1) b.(length b - 1)|].

raises Invalid_argument

if a and b have distinct lengths.

since
0.20
val rev : 'a t -> 'a t

rev a copies the array a and reverses it in place.

since
0.20
val filter : f:('a -> bool) -> 'a t -> 'a t

filter ~f a filters elements out of the array a. Only the elements satisfying the given predicate ~f will be kept.

val filter_map : f:('a -> 'b option) -> 'a t -> 'b t

filter_map ~f [|a1; ...; an|] calls (~f a1) ... (~f an) and returns an array b consisting of all elements bi such as ~f ai = Some bi. When ~f returns None, the corresponding element of a is discarded.

val flat_map : f:('a -> 'b t) -> 'a t -> 'b array

flat_map ~f a transforms each element of a into an array, then flattens.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

a >>= f is the infix version of flat_map.

val (>>|) : 'a t -> ('a -> 'b) -> 'b t

a >>| f is the infix version of map.

since
0.8
val (>|=) : 'a t -> ('a -> 'b) -> 'b t

a >|= f is the infix version of map.

since
0.8
val except_idx : 'a t -> int -> 'a list

except_idx a i removes the element of a at given index i, and returns the list of the other elements.

val (--) : int -> int -> int t

x -- y creates an array containing integers in the range x .. y. Bounds included.

val (--^) : int -> int -> int t

x --^ y creates an array containing integers in the range x .. y. Right bound excluded.

since
0.17
val random : 'a random_gen -> 'a t random_gen
val random_non_empty : 'a random_gen -> 'a t random_gen
val random_len : int -> 'a random_gen -> 'a t random_gen

Generic Functions

module type MONO_ARRAY = sig ... end
val sort_generic : (module MONO_ARRAY with type elt = 'elt and type t = 'arr) -> cmp:('elt -> 'elt -> int) -> 'arr -> unit

sort_generic (module M) ~cmp a sorts the array a, without allocating (eats stack space though). Performance might be lower than Array.sort.

since
0.14
\ No newline at end of file +CCArrayLabels (containers.CCArrayLabels)

Module CCArrayLabels

Array utils

type 'a sequence = ('a -> unit) -> unit
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a gen = unit -> 'a option
type 'a equal = 'a -> 'a -> bool
type 'a ord = 'a -> 'a -> int
type 'a random_gen = Random.State.t -> 'a
type 'a printer = Format.formatter -> 'a -> unit

Arrays

include module type of ArrayLabels
val length : 'a array -> int
val get : 'a array -> int -> 'a
val set : 'a array -> int -> 'a -> unit
val make : int -> 'a -> 'a array
val create : int -> 'a -> 'a array
val init : int -> f:(int -> 'a) -> 'a array
val make_matrix : dimx:int -> dimy:int -> 'a -> 'a array array
val create_matrix : dimx:int -> dimy:int -> 'a -> 'a array array
val append : 'a array -> 'a array -> 'a array
val concat : 'a array list -> 'a array
val sub : 'a array -> pos:int -> len:int -> 'a array
val copy : 'a array -> 'a array
val fill : 'a array -> pos:int -> len:int -> 'a -> unit
val blit : src:'a array -> src_pos:int -> dst:'a array -> dst_pos:int -> len:int -> unit
val to_list : 'a array -> 'a list
val of_list : 'a list -> 'a array
val iter : f:('a -> unit) -> 'a array -> unit
val map : f:('a -> 'b) -> 'a array -> 'b array
val iteri : f:(int -> 'a -> unit) -> 'a array -> unit
val mapi : f:(int -> 'a -> 'b) -> 'a array -> 'b array
val fold_left : f:('a -> 'b -> 'a) -> init:'a -> 'b array -> 'a
val fold_right : f:('b -> 'a -> 'a) -> 'b array -> init:'a -> 'a
val iter2 : f:('a -> 'b -> unit) -> 'a array -> 'b array -> unit
val map2 : f:('a -> 'b -> 'c) -> 'a array -> 'b array -> 'c array
val exists : f:('a -> bool) -> 'a array -> bool
val for_all : f:('a -> bool) -> 'a array -> bool
val mem : 'a -> set:'a array -> bool
val memq : 'a -> set:'a array -> bool
val create_float : int -> float array
val make_float : int -> float array
val sort : cmp:('a -> 'a -> int) -> 'a array -> unit
val stable_sort : cmp:('a -> 'a -> int) -> 'a array -> unit
val fast_sort : cmp:('a -> 'a -> int) -> 'a array -> unit
val unsafe_get : 'a array -> int -> 'a
val unsafe_set : 'a array -> int -> 'a -> unit
module Floatarray : sig ... end
type 'a t = 'a array

The type for arrays

val empty : 'a t

empty is the empty array, physically equal to ||.

val equal : 'a equal -> 'a t equal

equal eq a1 a2 is true if the lengths of a1 and a2 are the same and if their corresponding elements test equal, using eq.

val compare : 'a ord -> 'a t ord

compare cmp a1 a2 compares arrays a1 and a2 using the function comparison cmp.

val swap : 'a t -> int -> int -> unit

swap a i j swaps elements at indices i and j.

since
1.4
val get : 'a t -> int -> 'a

get a n returns the element number n of array a. The first element has number 0. The last element has number length a - 1. You can also write a.(n) instead of get a n.

Raise Invalid_argument "index out of bounds" if n is outside the range 0 to (length a - 1).

val get_safe : 'a t -> int -> 'a option

get_safe a i returns Some a.(i) if i is a valid index.

since
0.18
val set : 'a t -> int -> 'a -> unit

set a n x modifies array a in place, replacing element number n with x. You can also write a.(n) <- x instead of set a n x.

Raise Invalid_argument "index out of bounds" if n is outside the range 0 to length a - 1.

val length : _ t -> int

length a returns the length (number of elements) of the given array a.

val fold : f:('a -> 'b -> 'a) -> init:'a -> 'b t -> 'a

fold ~f ~init a computes ~f (... (~f (~f ~init a.(0)) a.(1)) ...) a.(n-1), where n is the length of the array a.

val foldi : f:('a -> int -> 'b -> 'a) -> init:'a -> 'b t -> 'a

foldi ~f ~init a is just like fold, but it also passes in the index of each element as the second argument to the folded function ~f.

val fold_while : f:('a -> 'b -> 'a * [ `Stop | `Continue ]) -> init:'a -> 'b t -> 'a

fold_while ~f ~init a folds left on array a until a stop condition via ('a, `Stop) is indicated by the accumulator.

since
0.8
val fold_map : f:('acc -> 'a -> 'acc * 'b) -> init:'acc -> 'a t -> 'acc * 'b t

fold_map ~f ~init a is a fold_left-like function, but it also maps the array to another array.

since
1.2, but only
since
2.1 with labels
val scan_left : f:('acc -> 'a -> 'acc) -> init:'acc -> 'a t -> 'acc t

scan_left ~f ~init a returns the array [|~init; ~f ~init x0; ~f (~f ~init a.(0)) a.(1); …|] .

since
1.2, but only
since
2.1 with labels
val iter : f:('a -> unit) -> 'a t -> unit

iter ~f a applies function ~f in turn to all elements of a. It is equivalent to ~f a.(0); ~f a.(1); ...; ~f a.(length a - 1); ().

val iteri : f:(int -> 'a -> unit) -> 'a t -> unit

iteri ~f a is like iter, but the function ~f is applied with the index of the element as first argument, and the element itself as second argument.

val blit : 'a t -> int -> 'a t -> int -> int -> unit

blit a1 o1 a2 o2 len copies len elements from array a1, starting at element number o1, to array a2, starting at element number o2. It works correctly even if a1 and a2 are the same array, and the source and destination chunks overlap.

Raise Invalid_argument "CCArray.blit" if o1 and len do not designate a valid subarray of a1, or if o2 and len do not designate a valid subarray of a2.

val reverse_in_place : 'a t -> unit

reverse_in_place a reverses the array a in place.

val sorted : f:('a -> 'a -> int) -> 'a t -> 'a array

sorted ~f a makes a copy of a and sorts it with ~f.

since
1.0
val sort_indices : f:('a -> 'a -> int) -> 'a t -> int array

sort_indices ~f a returns a new array b, with the same length as a, such that b.(i) is the index at which the i-th element of sorted ~f a appears in a. a is not modified.

In other words, map (fun i -> a.(i)) (sort_indices ~f a) = sorted ~f a. sort_indices yields the inverse permutation of sort_ranking.

since
1.0
val sort_ranking : f:('a -> 'a -> int) -> 'a t -> int array

sort_ranking ~f a returns a new array b, with the same length as a, such that b.(i) is the index at which the i-th element of a appears in sorted ~f a. a is not modified.

In other words, map (fun i -> (sorted ~f a).(i)) (sort_ranking ~f a) = a. sort_ranking yields the inverse permutation of sort_indices.

In the absence of duplicate elements in a, we also have lookup_exn a.(i) (sorted a) = (sorted_ranking a).(i).

since
1.0
val find_map : f:('a -> 'b option) -> 'a t -> 'b option

find_map ~f a returns Some y if there is an element x such that ~f x = Some y. Otherwise returns None.

since
1.3, but only
since
2.1 with labels
val find : f:('a -> 'b option) -> 'a t -> 'b option

find ~f a is an alias to find_map.

deprecated

since 1.3, use find_map instead. The version with labels is

deprecated

since 2.1, use find_map instead.

val find_map_i : f:(int -> 'a -> 'b option) -> 'a t -> 'b option

find_map_i ~f a is like find_map, but the index of the element is also passed to the predicate function ~f.

since
1.3, but only
since
2.1 with labels
val findi : f:(int -> 'a -> 'b option) -> 'a t -> 'b option

findi ~f a is an alias to find_map_i.

since
0.3.4
deprecated

since 1.3, use find_map instead. The version with labels is

deprecated

since 2.1, use find_map instead.

val find_idx : f:('a -> bool) -> 'a t -> (int * 'a) option

find_idx ~f a returns Some (i,x) where x is the i-th element of a, and ~f x holds. Otherwise returns None.

since
0.3.4
val lookup : cmp:'a ord -> key:'a -> 'a t -> int option

lookup ~cmp ~key a lookups the index of some key ~key in a sorted array a. Undefined behavior if the array a is not sorted wrt ~cmp. Complexity: O(log (n)) (dichotomic search).

returns

None if the key ~key is not present, or Some i (i the index of the key) otherwise.

val lookup_exn : cmp:'a ord -> key:'a -> 'a t -> int

lookup_exn ~cmp ~key a is like lookup, but

raises Not_found

if the key ~key is not present.

val bsearch : cmp:('a -> 'a -> int) -> key:'a -> 'a t -> [ `All_lower | `All_bigger | `Just_after of int | `Empty | `At of int ]

bsearch ~cmp ~key a finds the index of the object ~key in the array a, provided a is sorted using ~cmp. If the array is not sorted, the result is not specified (may raise Invalid_argument).

Complexity: O(log n) where n is the length of the array a (dichotomic search).

returns
  • `At i if cmp a.(i) key = 0 (for some i).
  • `All_lower if all elements of a are lower than key.
  • `All_bigger if all elements of a are bigger than key.
  • `Just_after i if a.(i) < key < a.(i+1).
  • `Empty if the array a is empty.
raises Invalid_argument

if the array is found to be unsorted w.r.t cmp.

since
0.13
val for_all : f:('a -> bool) -> 'a t -> bool

for_all ~f [|a1; ...; an|] is true if all elements of the array satisfy the predicate ~f. That is, it returns (~f a1) && (~f a2) && ... && (~f an).

val for_all2 : f:('a -> 'b -> bool) -> 'a t -> 'b t -> bool

for_all2 ~f [|a1; ...; an|] [|b1; ...; bn|] is true if each pair of elements ai bi satisfies the predicate ~f. That is, it returns (~f a1 b1) && (~f a2 b2) && ... && (~f an bn).

raises Invalid_argument

if arrays have distinct lengths. Allow different types.

since
0.20
val exists : f:('a -> bool) -> 'a t -> bool

exists ~f [|a1; ...; an|] is true if at least one element of the array satisfies the predicate ~f. That is, it returns (~f a1) || (~f a2) || ... || (~f an).

val exists2 : f:('a -> 'b -> bool) -> 'a t -> 'b t -> bool

exists2 ~f [|a1; ...; an|] [|b1; ...; bn|] is true if any pair of elements ai bi satisfies the predicate ~f. That is, it returns (~f a1 b1) || (~f a2 b2) || ... || (~f an bn).

raises Invalid_argument

if arrays have distinct lengths. Allow different types.

since
0.20
val fold2 : f:('acc -> 'a -> 'b -> 'acc) -> init:'acc -> 'a t -> 'b t -> 'acc

fold2 ~f ~init a b fold on two arrays a and b stepwise. It computes ~f (... (~f ~init a1 b1)...) an bn.

raises Invalid_argument

if a and b have distinct lengths.

since
0.20
val iter2 : f:('a -> 'b -> unit) -> 'a t -> 'b t -> unit

iter2 ~f a b iterates on the two arrays a and b stepwise. It is equivalent to ~f a0 b0; ...; ~f a.(length a - 1) b.(length b - 1); ().

raises Invalid_argument

if a and b have distinct lengths.

since
0.20
val shuffle : 'a t -> unit

shuffle a randomly shuffles the array a, in place.

val shuffle_with : Random.State.t -> 'a t -> unit

shuffle_with rs a randomly shuffles the array a (like shuffle) but a specialized random state rs is used to control the random numbers being produced during shuffling (for reproducibility).

val random_choose : 'a t -> 'a random_gen

random_choose a rs randomly chooses an element of a.

raises Not_found

if the array/slice is empty.

val to_string : ?⁠sep:string -> ('a -> string) -> 'a array -> string

to_string ~sep item_to_string a print a to a string using sep as a separator between elements of a.

since
NEXT_RELEASE
val to_seq : 'a t -> 'a sequence

to_seq a returns a sequence of the elements of an array a. The input array a is shared with the sequence and modification of it will result in modification of the sequence.

val to_gen : 'a t -> 'a gen

to_gen a returns a gen of the elements of an array a.

val to_klist : 'a t -> 'a klist

to_klist returns a klist of the elements of an array a.

IO

val pp : ?⁠sep:string -> 'a printer -> 'a t printer

pp ~sep pp_item ppf a formats the array a on ppf. Each element is formatted with pp_item and elements are separated by sep (defaults to ", ").

val pp_i : ?⁠sep:string -> (int -> 'a printer) -> 'a t printer

pp_i ~sep pp_item ppf a prints the array a on ppf. The printing function pp_item is giving both index and element. Elements are separated by sep (defaults to ", ").

val map : f:('a -> 'b) -> 'a t -> 'b t

map ~f a applies function f to all elements of a, and builds an array with the results returned by ~f: [| ~f a.(0); ~f a.(1); ...; ~f a.(length a - 1) |].

val map2 : f:('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t

map2 ~f a b applies function ~f to all elements of a and b, and builds an array with the results returned by ~f: [| ~f a.(0) b.(0); ...; ~f a.(length a - 1) b.(length b - 1)|].

raises Invalid_argument

if a and b have distinct lengths.

since
0.20
val rev : 'a t -> 'a t

rev a copies the array a and reverses it in place.

since
0.20
val filter : f:('a -> bool) -> 'a t -> 'a t

filter ~f a filters elements out of the array a. Only the elements satisfying the given predicate ~f will be kept.

val filter_map : f:('a -> 'b option) -> 'a t -> 'b t

filter_map ~f [|a1; ...; an|] calls (~f a1) ... (~f an) and returns an array b consisting of all elements bi such as ~f ai = Some bi. When ~f returns None, the corresponding element of a is discarded.

val flat_map : f:('a -> 'b t) -> 'a t -> 'b array

flat_map ~f a transforms each element of a into an array, then flattens.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

a >>= f is the infix version of flat_map.

val (>>|) : 'a t -> ('a -> 'b) -> 'b t

a >>| f is the infix version of map.

since
0.8
val (>|=) : 'a t -> ('a -> 'b) -> 'b t

a >|= f is the infix version of map.

since
0.8
val except_idx : 'a t -> int -> 'a list

except_idx a i removes the element of a at given index i, and returns the list of the other elements.

val (--) : int -> int -> int t

x -- y creates an array containing integers in the range x .. y. Bounds included.

val (--^) : int -> int -> int t

x --^ y creates an array containing integers in the range x .. y. Right bound excluded.

since
0.17
val random : 'a random_gen -> 'a t random_gen
val random_non_empty : 'a random_gen -> 'a t random_gen
val random_len : int -> 'a random_gen -> 'a t random_gen

Generic Functions

module type MONO_ARRAY = sig ... end
val sort_generic : (module MONO_ARRAY with type elt = 'elt and type t = 'arr) -> cmp:('elt -> 'elt -> int) -> 'arr -> unit

sort_generic (module M) ~cmp a sorts the array a, without allocating (eats stack space though). Performance might be lower than Array.sort.

since
0.14

Infix Operators

It is convenient to open CCArray.Infix to access the infix operators without cluttering the scope too much.

since
2.7
module Infix : sig ... end
\ No newline at end of file diff --git a/dev/containers/CCArrayLabels/module-type-MONO_ARRAY/index.html b/dev/containers/CCArrayLabels/module-type-MONO_ARRAY/index.html index c781e7c7..309c7e3a 100644 --- a/dev/containers/CCArrayLabels/module-type-MONO_ARRAY/index.html +++ b/dev/containers/CCArrayLabels/module-type-MONO_ARRAY/index.html @@ -1,2 +1,2 @@ -MONO_ARRAY (containers.CCArrayLabels.MONO_ARRAY)

Module type CCArrayLabels.MONO_ARRAY

type elt
type t
val length : t -> int
val get : t -> int -> elt
val set : t -> int -> elt -> unit
\ No newline at end of file +MONO_ARRAY (containers.CCArrayLabels.MONO_ARRAY)

Module type CCArrayLabels.MONO_ARRAY

type elt
type t
val length : t -> int
val get : t -> int -> elt
val set : t -> int -> elt -> unit
\ No newline at end of file diff --git a/dev/containers/CCArray_slice.odoc b/dev/containers/CCArray_slice.odoc deleted file mode 100644 index b95b668c585c0bb6da860a397cbdb3b7e8102fa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9619 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 -CCArray_slice (containers.CCArray_slice)

Module CCArray_slice

Array Slice

type 'a sequence = ('a -> unit) -> unit
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a gen = unit -> 'a option
type 'a equal = 'a -> 'a -> bool
type 'a ord = 'a -> 'a -> int
type 'a random_gen = Random.State.t -> 'a
type 'a printer = Format.formatter -> 'a -> unit
type 'a t

The type for an array slice, containing elements of type 'a

val empty : 'a t

empty is the empty array slice.

val equal : 'a equal -> 'a t equal

equal eq as1 as2 is true if the lengths of as1 and as2 are the same and if the corresponding elements test equal using eq.

val compare : 'a ord -> 'a t ord

compare cmp as1 as2 compares the two slices as1 and as2 using the comparison function cmp, element by element.

val get : 'a t -> int -> 'a

get as n returns the element number n of slice as. The first element has number 0. The last element has number length as - 1. You can also write as.(n) instead of get as n.

Raise Invalid_argument "index out of bounds" if n is outside the range 0 to (length as - 1).

val get_safe : 'a t -> int -> 'a option

get_safe as i returns Some as.(i) if i is a valid index.

since
0.18
val make : 'a array -> int -> len:int -> 'a t

make a i ~len creates a slice from given offset i and length len of the given array a.

raises Invalid_argument

if the slice isn't valid.

val of_slice : ('a array * int * int) -> 'a t

of_slice (a, i, len) makes a slice from a triple (a, i, len) where a is the array, i the offset in a, and len the number of elements of the slice.

raises Invalid_argument

if the slice isn't valid (See make).

val to_slice : 'a t -> 'a array * int * int

to_slice as converts the slice as into a triple (a, i, len) where len is the length of the sub-array of a starting at offset i.

val to_list : 'a t -> 'a list

to_list as converts the slice as directly to a list.

since
1.0
val full : 'a array -> 'a t

full a creates a slice that covers the full array a.

val underlying : 'a t -> 'a array

underlying as returns the underlying array (shared). Modifying this array will modify the slice as.

val copy : 'a t -> 'a array

copy as copies the slice as into a new array.

val sub : 'a t -> int -> int -> 'a t

sub as i len builds a new sub-slice that contains the given subrange specified by the index i and the length len.

val set : 'a t -> int -> 'a -> unit

set as n x modifies the slice as in place, replacing element number n with x. You can also write as.(n) <- x instead of set as n x.

Raise Invalid_argument "index out of bounds" if n is outside the range 0 to length as - 1.

val length : _ t -> int

length as returns the length (number of elements) of the given slice as.

val fold : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a

fold f acc as computes f (... (f (f acc as.(0)) as.(1)) ...) as.(length as - 1).

val foldi : ('a -> int -> 'b -> 'a) -> 'a -> 'b t -> 'a

foldi f acc as is just like fold but it also passes in the index of each element as the second argument to the folded function f.

val fold_while : ('a -> 'b -> 'a * [ `Stop | `Continue ]) -> 'a -> 'b t -> 'a

fold_while f acc as folds left on slice as until a stop condition via ('a, `Stop) is indicated by the accumulator.

since
0.8
val iter : ('a -> unit) -> 'a t -> unit

iter f as applies function f in turn to all elements of as. It is equivalent to f as.(0); f as.(1); ...; f as.(length as - 1); ().

val iteri : (int -> 'a -> unit) -> 'a t -> unit

iteri f as is like iter, but the function f is applied with the index of the element as first argument, and the element itself as second argument.

val blit : 'a t -> int -> 'a t -> int -> int -> unit

blit as1 o1 as2 o2 len copies len elements from slice as1, starting at element number o1, to slice as2, starting at element number o2. It works correctly even if as1 and as2 are the same slice, and the source and destination chunks overlap.

Raise Invalid_argument "CCArray_slice.blit" if o1 and len do not designate a valid subarray of as1, or if o2 and len do not designate a valid subarray of as2.

val reverse_in_place : 'a t -> unit

reverse_in_place as reverses the slice as in place.

val sorted : ('a -> 'a -> int) -> 'a t -> 'a array

sorted cmp as makes a copy of as and sorts it with cmp.

since
1.0
val sort_indices : ('a -> 'a -> int) -> 'a t -> int array

sort_indices cmp as returns a new array b, with the same length as as, such that b.(i) is the index at which the i-th element of sorted cmp as appears in as. as is not modified.

In other words, map (fun i -> as.(i)) (sort_indices cmp as) = sorted cmp as. sort_indices yields the inverse permutation of sort_ranking.

since
1.0
val sort_ranking : ('a -> 'a -> int) -> 'a t -> int array

sort_ranking cmp as returns a new array b, with the same length as as, such that b.(i) is the index at which the i-th element of as appears in sorted cmp as. as is not modified.

In other words, map (fun i -> (sorted cmp as).(i)) (sort_ranking cmp as) = as. sort_ranking yields the inverse permutation of sort_indices.

In the absence of duplicate elements in as, we also have lookup_exn as.(i) (sorted as) = (sorted_ranking as).(i).

since
1.0
val find : ('a -> 'b option) -> 'a t -> 'b option

find f as returns Some y if there is an element x such that f x = Some y. Otherwise returns None.

val findi : (int -> 'a -> 'b option) -> 'a t -> 'b option

findi f as is like find, but the index of the element is also passed to the predicate function f.

since
0.3.4
val find_idx : ('a -> bool) -> 'a t -> (int * 'a) option

find_idx p as returns Some (i,x) where x is the i-th element of as, and p x holds. Otherwise returns None.

since
0.3.4
val lookup : cmp:'a ord -> 'a -> 'a t -> int option

lookup ~cmp x as lookups the index i of some key x in the slice as, provided as is sorted using cmp.

returns

None if the key x is not present, or Some i (i the index of the key) otherwise.

val lookup_exn : cmp:'a ord -> 'a -> 'a t -> int

lookup_exn ~cmp x as is like lookup, but

raises Not_found

if the key x is not present.

val bsearch : cmp:('a -> 'a -> int) -> 'a -> 'a t -> [ `All_lower | `All_bigger | `Just_after of int | `Empty | `At of int ]

bsearch ~cmp x as finds the index of the object x in the slice as, provided as is sorted using cmp. If the slice is not sorted, the result is not specified (may raise Invalid_argument).

Complexity: O(log n) where n is the length of the slice as (dichotomic search).

returns
  • `At i if cmp as.(i) x = 0 (for some i).
  • `All_lower if all elements of as are lower than x.
  • `All_bigger if all elements of as are bigger than x.
  • `Just_after i if as.(i) < x < as.(i+1).
  • `Empty if the slice as is empty.
raises Invalid_argument

if the slice is found to be unsorted w.r.t cmp.

since
0.13
val for_all : ('a -> bool) -> 'a t -> bool

for_all p [|as1; ...; asn|] checks if all elements of the slice satisfy the predicate p. That is, it returns (p as1) && (p as2) && ... && (p asn).

val for_all2 : ('a -> 'b -> bool) -> 'a t -> 'b t -> bool

for_all2 p [|as1; ...; asn|] [|bs1; ...; bsn|] is true if each pair of elements asi bsi satisfies the predicate p. That is, it returns (p as1 bs1) && (p as2 bs2) && ... && (p asn bsn).

raises Invalid_argument

if slices have distinct lengths. Allow different types.

since
0.20
val exists : ('a -> bool) -> 'a t -> bool

exists p [|as1; ...; asn|] is true if at least one element of the slice satisfies the predicate p. That is, it returns (p as1) || (p as2) || ... || (p asn).

val exists2 : ('a -> 'b -> bool) -> 'a t -> 'b t -> bool

exists2 p [|as1; ...; asn|] [|bs1; ...; bsn|] is true if any pair of elements asi bsi satisfies the predicate p. That is, it returns (p as1 bs1) || (p as2 bs2) || ... || (p asn bsn).

raises Invalid_argument

if slices have distinct lengths. Allow different types.

since
0.20
val fold2 : ('acc -> 'a -> 'b -> 'acc) -> 'acc -> 'a t -> 'b t -> 'acc

fold2 f acc as bs fold on two slices as and bs stepwise. It computes f (... (f acc as1 bs1)...) asn bsn.

raises Invalid_argument

if slices have distinct lengths.

since
0.20
val iter2 : ('a -> 'b -> unit) -> 'a t -> 'b t -> unit

iter2 f as bs iterates on the two slices as and bs stepwise. It is equivalent to f as0 bs0; ...; f as.(length as - 1) bs.(length bs - 1); ().

raises Invalid_argument

if slices have distinct lengths.

since
0.20
val shuffle : 'a t -> unit

shuffle as randomly shuffles the slice as, in place.

val shuffle_with : Random.State.t -> 'a t -> unit

shuffle_with rs as randomly shuffles the slice as (like shuffle) but a specialized random state rs is used to control the random numbers being produced during shuffling (for reproducibility).

val random_choose : 'a t -> 'a random_gen

random_choose as rs randomly chooses an element of as.

raises Not_found

if the array/slice is empty.

val to_seq : 'a t -> 'a sequence

to_seq as returns a sequence of the elements of a slice as. The input slice as is shared with the sequence and modification of it will result in modification of the sequence.

val to_gen : 'a t -> 'a gen

to_gen as returns a gen of the elements of a slice as.

val to_klist : 'a t -> 'a klist

to_klist as returns a klist of the elements of a slice as.

IO

val pp : ?⁠sep:string -> 'a printer -> 'a t printer

pp ~sep pp_item ppf as formats the slice as on ppf. Each element is formatted with pp_item and elements are separated by sep (defaults to ", ").

val pp_i : ?⁠sep:string -> (int -> 'a printer) -> 'a t printer

pp_i ~sep pp_item ppf as prints the slice as on ppf. The printing function pp_item is giving both index and element. Elements are separated by sep (defaults to ", ").

\ No newline at end of file +CCArray_slice (containers.CCArray_slice)

Module CCArray_slice

Array Slice

type 'a sequence = ('a -> unit) -> unit
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a gen = unit -> 'a option
type 'a equal = 'a -> 'a -> bool
type 'a ord = 'a -> 'a -> int
type 'a random_gen = Random.State.t -> 'a
type 'a printer = Format.formatter -> 'a -> unit
type 'a t

The type for an array slice, containing elements of type 'a

val empty : 'a t

empty is the empty array slice.

val equal : 'a equal -> 'a t equal

equal eq as1 as2 is true if the lengths of as1 and as2 are the same and if the corresponding elements test equal using eq.

val compare : 'a ord -> 'a t ord

compare cmp as1 as2 compares the two slices as1 and as2 using the comparison function cmp, element by element.

val get : 'a t -> int -> 'a

get as n returns the element number n of slice as. The first element has number 0. The last element has number length as - 1. You can also write as.(n) instead of get as n.

Raise Invalid_argument "index out of bounds" if n is outside the range 0 to (length as - 1).

val get_safe : 'a t -> int -> 'a option

get_safe as i returns Some as.(i) if i is a valid index.

since
0.18
val make : 'a array -> int -> len:int -> 'a t

make a i ~len creates a slice from given offset i and length len of the given array a.

raises Invalid_argument

if the slice isn't valid.

val of_slice : ('a array * int * int) -> 'a t

of_slice (a, i, len) makes a slice from a triple (a, i, len) where a is the array, i the offset in a, and len the number of elements of the slice.

raises Invalid_argument

if the slice isn't valid (See make).

val to_slice : 'a t -> 'a array * int * int

to_slice as converts the slice as into a triple (a, i, len) where len is the length of the sub-array of a starting at offset i.

val to_list : 'a t -> 'a list

to_list as converts the slice as directly to a list.

since
1.0
val full : 'a array -> 'a t

full a creates a slice that covers the full array a.

val underlying : 'a t -> 'a array

underlying as returns the underlying array (shared). Modifying this array will modify the slice as.

val copy : 'a t -> 'a array

copy as copies the slice as into a new array.

val sub : 'a t -> int -> int -> 'a t

sub as i len builds a new sub-slice that contains the given subrange specified by the index i and the length len.

val set : 'a t -> int -> 'a -> unit

set as n x modifies the slice as in place, replacing element number n with x. You can also write as.(n) <- x instead of set as n x.

Raise Invalid_argument "index out of bounds" if n is outside the range 0 to length as - 1.

val length : _ t -> int

length as returns the length (number of elements) of the given slice as.

val fold : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a

fold f acc as computes f (... (f (f acc as.(0)) as.(1)) ...) as.(length as - 1).

val foldi : ('a -> int -> 'b -> 'a) -> 'a -> 'b t -> 'a

foldi f acc as is just like fold but it also passes in the index of each element as the second argument to the folded function f.

val fold_while : ('a -> 'b -> 'a * [ `Stop | `Continue ]) -> 'a -> 'b t -> 'a

fold_while f acc as folds left on slice as until a stop condition via ('a, `Stop) is indicated by the accumulator.

since
0.8
val iter : ('a -> unit) -> 'a t -> unit

iter f as applies function f in turn to all elements of as. It is equivalent to f as.(0); f as.(1); ...; f as.(length as - 1); ().

val iteri : (int -> 'a -> unit) -> 'a t -> unit

iteri f as is like iter, but the function f is applied with the index of the element as first argument, and the element itself as second argument.

val blit : 'a t -> int -> 'a t -> int -> int -> unit

blit as1 o1 as2 o2 len copies len elements from slice as1, starting at element number o1, to slice as2, starting at element number o2. It works correctly even if as1 and as2 are the same slice, and the source and destination chunks overlap.

Raise Invalid_argument "CCArray_slice.blit" if o1 and len do not designate a valid subarray of as1, or if o2 and len do not designate a valid subarray of as2.

val reverse_in_place : 'a t -> unit

reverse_in_place as reverses the slice as in place.

val sorted : ('a -> 'a -> int) -> 'a t -> 'a array

sorted cmp as makes a copy of as and sorts it with cmp.

since
1.0
val sort_indices : ('a -> 'a -> int) -> 'a t -> int array

sort_indices cmp as returns a new array b, with the same length as as, such that b.(i) is the index at which the i-th element of sorted cmp as appears in as. as is not modified.

In other words, map (fun i -> as.(i)) (sort_indices cmp as) = sorted cmp as. sort_indices yields the inverse permutation of sort_ranking.

since
1.0
val sort_ranking : ('a -> 'a -> int) -> 'a t -> int array

sort_ranking cmp as returns a new array b, with the same length as as, such that b.(i) is the index at which the i-th element of as appears in sorted cmp as. as is not modified.

In other words, map (fun i -> (sorted cmp as).(i)) (sort_ranking cmp as) = as. sort_ranking yields the inverse permutation of sort_indices.

In the absence of duplicate elements in as, we also have lookup_exn as.(i) (sorted as) = (sorted_ranking as).(i).

since
1.0
val find : ('a -> 'b option) -> 'a t -> 'b option

find f as returns Some y if there is an element x such that f x = Some y. Otherwise returns None.

val findi : (int -> 'a -> 'b option) -> 'a t -> 'b option

findi f as is like find, but the index of the element is also passed to the predicate function f.

since
0.3.4
val find_idx : ('a -> bool) -> 'a t -> (int * 'a) option

find_idx p as returns Some (i,x) where x is the i-th element of as, and p x holds. Otherwise returns None.

since
0.3.4
val lookup : cmp:'a ord -> 'a -> 'a t -> int option

lookup ~cmp x as lookups the index i of some key x in the slice as, provided as is sorted using cmp.

returns

None if the key x is not present, or Some i (i the index of the key) otherwise.

val lookup_exn : cmp:'a ord -> 'a -> 'a t -> int

lookup_exn ~cmp x as is like lookup, but

raises Not_found

if the key x is not present.

val bsearch : cmp:('a -> 'a -> int) -> 'a -> 'a t -> [ `All_lower | `All_bigger | `Just_after of int | `Empty | `At of int ]

bsearch ~cmp x as finds the index of the object x in the slice as, provided as is sorted using cmp. If the slice is not sorted, the result is not specified (may raise Invalid_argument).

Complexity: O(log n) where n is the length of the slice as (dichotomic search).

returns
  • `At i if cmp as.(i) x = 0 (for some i).
  • `All_lower if all elements of as are lower than x.
  • `All_bigger if all elements of as are bigger than x.
  • `Just_after i if as.(i) < x < as.(i+1).
  • `Empty if the slice as is empty.
raises Invalid_argument

if the slice is found to be unsorted w.r.t cmp.

since
0.13
val for_all : ('a -> bool) -> 'a t -> bool

for_all p [|as1; ...; asn|] checks if all elements of the slice satisfy the predicate p. That is, it returns (p as1) && (p as2) && ... && (p asn).

val for_all2 : ('a -> 'b -> bool) -> 'a t -> 'b t -> bool

for_all2 p [|as1; ...; asn|] [|bs1; ...; bsn|] is true if each pair of elements asi bsi satisfies the predicate p. That is, it returns (p as1 bs1) && (p as2 bs2) && ... && (p asn bsn).

raises Invalid_argument

if slices have distinct lengths. Allow different types.

since
0.20
val exists : ('a -> bool) -> 'a t -> bool

exists p [|as1; ...; asn|] is true if at least one element of the slice satisfies the predicate p. That is, it returns (p as1) || (p as2) || ... || (p asn).

val exists2 : ('a -> 'b -> bool) -> 'a t -> 'b t -> bool

exists2 p [|as1; ...; asn|] [|bs1; ...; bsn|] is true if any pair of elements asi bsi satisfies the predicate p. That is, it returns (p as1 bs1) || (p as2 bs2) || ... || (p asn bsn).

raises Invalid_argument

if slices have distinct lengths. Allow different types.

since
0.20
val fold2 : ('acc -> 'a -> 'b -> 'acc) -> 'acc -> 'a t -> 'b t -> 'acc

fold2 f acc as bs fold on two slices as and bs stepwise. It computes f (... (f acc as1 bs1)...) asn bsn.

raises Invalid_argument

if slices have distinct lengths.

since
0.20
val iter2 : ('a -> 'b -> unit) -> 'a t -> 'b t -> unit

iter2 f as bs iterates on the two slices as and bs stepwise. It is equivalent to f as0 bs0; ...; f as.(length as - 1) bs.(length bs - 1); ().

raises Invalid_argument

if slices have distinct lengths.

since
0.20
val shuffle : 'a t -> unit

shuffle as randomly shuffles the slice as, in place.

val shuffle_with : Random.State.t -> 'a t -> unit

shuffle_with rs as randomly shuffles the slice as (like shuffle) but a specialized random state rs is used to control the random numbers being produced during shuffling (for reproducibility).

val random_choose : 'a t -> 'a random_gen

random_choose as rs randomly chooses an element of as.

raises Not_found

if the array/slice is empty.

val to_seq : 'a t -> 'a sequence

to_seq as returns a sequence of the elements of a slice as. The input slice as is shared with the sequence and modification of it will result in modification of the sequence.

val to_gen : 'a t -> 'a gen

to_gen as returns a gen of the elements of a slice as.

val to_klist : 'a t -> 'a klist

to_klist as returns a klist of the elements of a slice as.

IO

val pp : ?⁠sep:string -> 'a printer -> 'a t printer

pp ~sep pp_item ppf as formats the slice as on ppf. Each element is formatted with pp_item and elements are separated by sep (defaults to ", ").

val pp_i : ?⁠sep:string -> (int -> 'a printer) -> 'a t printer

pp_i ~sep pp_item ppf as prints the slice as on ppf. The printing function pp_item is giving both index and element. Elements are separated by sep (defaults to ", ").

\ No newline at end of file diff --git a/dev/containers.data/CCCache/.jbuilder-keep b/dev/containers/CCArray_sliceLabels/.dune-keep similarity index 100% rename from dev/containers.data/CCCache/.jbuilder-keep rename to dev/containers/CCArray_sliceLabels/.dune-keep diff --git a/dev/containers/CCArray_sliceLabels/index.html b/dev/containers/CCArray_sliceLabels/index.html new file mode 100644 index 00000000..3a35f126 --- /dev/null +++ b/dev/containers/CCArray_sliceLabels/index.html @@ -0,0 +1,2 @@ + +CCArray_sliceLabels (containers.CCArray_sliceLabels)

Module CCArray_sliceLabels

Array Slice

type 'a sequence = ('a -> unit) -> unit
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a gen = unit -> 'a option
type 'a equal = 'a -> 'a -> bool
type 'a ord = 'a -> 'a -> int
type 'a random_gen = Random.State.t -> 'a
type 'a printer = Format.formatter -> 'a -> unit
type 'a t

The type for an array slice, containing elements of type 'a

val empty : 'a t

empty is the empty array slice.

val equal : 'a equal -> 'a t equal

equal eq as1 as2 is true if the lengths of as1 and as2 are the same and if the corresponding elements test equal using eq.

val compare : 'a ord -> 'a t ord

compare cmp as1 as2 compares the two slices as1 and as2 using the comparison function cmp, element by element.

val get : 'a t -> int -> 'a

get as n returns the element number n of slice as. The first element has number 0. The last element has number length as - 1. You can also write as.(n) instead of get as n.

Raise Invalid_argument "index out of bounds" if n is outside the range 0 to (length as - 1).

val get_safe : 'a t -> int -> 'a option

get_safe as i returns Some as.(i) if i is a valid index.

since
0.18
val make : 'a array -> int -> len:int -> 'a t

make a i ~len creates a slice from given offset i and length len of the given array a.

raises Invalid_argument

if the slice isn't valid.

val of_slice : ('a array * int * int) -> 'a t

of_slice (a, i, len) makes a slice from a triple (a, i, len) where a is the array, i the offset in a, and len the number of elements of the slice.

raises Invalid_argument

if the slice isn't valid (See make).

val to_slice : 'a t -> 'a array * int * int

to_slice as converts the slice as into a triple (a, i, len) where len is the length of the sub-array of a starting at offset i.

val to_list : 'a t -> 'a list

to_list as converts the slice as directly to a list.

since
1.0
val full : 'a array -> 'a t

full a creates a slice that covers the full array a.

val underlying : 'a t -> 'a array

underlying as returns the underlying array (shared). Modifying this array will modify the slice as.

val copy : 'a t -> 'a array

copy as copies the slice as into a new array.

val sub : 'a t -> int -> int -> 'a t

sub as i len builds a new sub-slice that contains the given subrange specified by the index i and the length len.

val set : 'a t -> int -> 'a -> unit

set as n x modifies the slice as in place, replacing element number n with x. You can also write as.(n) <- x instead of set as n x.

Raise Invalid_argument "index out of bounds" if n is outside the range 0 to length as - 1.

val length : _ t -> int

length as returns the length (number of elements) of the given slice as.

val fold : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a

fold f acc as computes f (... (f (f acc as.(0)) as.(1)) ...) as.(length as - 1).

val foldi : ('a -> int -> 'b -> 'a) -> 'a -> 'b t -> 'a

foldi f acc as is just like fold but it also passes in the index of each element as the second argument to the folded function f.

val fold_while : ('a -> 'b -> 'a * [ `Stop | `Continue ]) -> 'a -> 'b t -> 'a

fold_while f acc as folds left on slice as until a stop condition via ('a, `Stop) is indicated by the accumulator.

since
0.8
val iter : ('a -> unit) -> 'a t -> unit

iter f as applies function f in turn to all elements of as. It is equivalent to f as.(0); f as.(1); ...; f as.(length as - 1); ().

val iteri : (int -> 'a -> unit) -> 'a t -> unit

iteri f as is like iter, but the function f is applied with the index of the element as first argument, and the element itself as second argument.

val blit : 'a t -> int -> 'a t -> int -> int -> unit

blit as1 o1 as2 o2 len copies len elements from slice as1, starting at element number o1, to slice as2, starting at element number o2. It works correctly even if as1 and as2 are the same slice, and the source and destination chunks overlap.

Raise Invalid_argument "CCArray_slice.blit" if o1 and len do not designate a valid subarray of as1, or if o2 and len do not designate a valid subarray of as2.

val reverse_in_place : 'a t -> unit

reverse_in_place as reverses the slice as in place.

val sorted : ('a -> 'a -> int) -> 'a t -> 'a array

sorted cmp as makes a copy of as and sorts it with cmp.

since
1.0
val sort_indices : ('a -> 'a -> int) -> 'a t -> int array

sort_indices cmp as returns a new array b, with the same length as as, such that b.(i) is the index at which the i-th element of sorted cmp as appears in as. as is not modified.

In other words, map (fun i -> as.(i)) (sort_indices cmp as) = sorted cmp as. sort_indices yields the inverse permutation of sort_ranking.

since
1.0
val sort_ranking : ('a -> 'a -> int) -> 'a t -> int array

sort_ranking cmp as returns a new array b, with the same length as as, such that b.(i) is the index at which the i-th element of as appears in sorted cmp as. as is not modified.

In other words, map (fun i -> (sorted cmp as).(i)) (sort_ranking cmp as) = as. sort_ranking yields the inverse permutation of sort_indices.

In the absence of duplicate elements in as, we also have lookup_exn as.(i) (sorted as) = (sorted_ranking as).(i).

since
1.0
val find : ('a -> 'b option) -> 'a t -> 'b option

find f as returns Some y if there is an element x such that f x = Some y. Otherwise returns None.

val findi : (int -> 'a -> 'b option) -> 'a t -> 'b option

findi f as is like find, but the index of the element is also passed to the predicate function f.

since
0.3.4
val find_idx : ('a -> bool) -> 'a t -> (int * 'a) option

find_idx p as returns Some (i,x) where x is the i-th element of as, and p x holds. Otherwise returns None.

since
0.3.4
val lookup : cmp:'a ord -> 'a -> 'a t -> int option

lookup ~cmp x as lookups the index i of some key x in the slice as, provided as is sorted using cmp.

returns

None if the key x is not present, or Some i (i the index of the key) otherwise.

val lookup_exn : cmp:'a ord -> 'a -> 'a t -> int

lookup_exn ~cmp x as is like lookup, but

raises Not_found

if the key x is not present.

val bsearch : cmp:('a -> 'a -> int) -> 'a -> 'a t -> [ `All_lower | `All_bigger | `Just_after of int | `Empty | `At of int ]

bsearch ~cmp x as finds the index of the object x in the slice as, provided as is sorted using cmp. If the slice is not sorted, the result is not specified (may raise Invalid_argument).

Complexity: O(log n) where n is the length of the slice as (dichotomic search).

returns
  • `At i if cmp as.(i) x = 0 (for some i).
  • `All_lower if all elements of as are lower than x.
  • `All_bigger if all elements of as are bigger than x.
  • `Just_after i if as.(i) < x < as.(i+1).
  • `Empty if the slice as is empty.
raises Invalid_argument

if the slice is found to be unsorted w.r.t cmp.

since
0.13
val for_all : ('a -> bool) -> 'a t -> bool

for_all p [|as1; ...; asn|] checks if all elements of the slice satisfy the predicate p. That is, it returns (p as1) && (p as2) && ... && (p asn).

val for_all2 : ('a -> 'b -> bool) -> 'a t -> 'b t -> bool

for_all2 p [|as1; ...; asn|] [|bs1; ...; bsn|] is true if each pair of elements asi bsi satisfies the predicate p. That is, it returns (p as1 bs1) && (p as2 bs2) && ... && (p asn bsn).

raises Invalid_argument

if slices have distinct lengths. Allow different types.

since
0.20
val exists : ('a -> bool) -> 'a t -> bool

exists p [|as1; ...; asn|] is true if at least one element of the slice satisfies the predicate p. That is, it returns (p as1) || (p as2) || ... || (p asn).

val exists2 : ('a -> 'b -> bool) -> 'a t -> 'b t -> bool

exists2 p [|as1; ...; asn|] [|bs1; ...; bsn|] is true if any pair of elements asi bsi satisfies the predicate p. That is, it returns (p as1 bs1) || (p as2 bs2) || ... || (p asn bsn).

raises Invalid_argument

if slices have distinct lengths. Allow different types.

since
0.20
val fold2 : ('acc -> 'a -> 'b -> 'acc) -> 'acc -> 'a t -> 'b t -> 'acc

fold2 f acc as bs fold on two slices as and bs stepwise. It computes f (... (f acc as1 bs1)...) asn bsn.

raises Invalid_argument

if slices have distinct lengths.

since
0.20
val iter2 : ('a -> 'b -> unit) -> 'a t -> 'b t -> unit

iter2 f as bs iterates on the two slices as and bs stepwise. It is equivalent to f as0 bs0; ...; f as.(length as - 1) bs.(length bs - 1); ().

raises Invalid_argument

if slices have distinct lengths.

since
0.20
val shuffle : 'a t -> unit

shuffle as randomly shuffles the slice as, in place.

val shuffle_with : Random.State.t -> 'a t -> unit

shuffle_with rs as randomly shuffles the slice as (like shuffle) but a specialized random state rs is used to control the random numbers being produced during shuffling (for reproducibility).

val random_choose : 'a t -> 'a random_gen

random_choose as rs randomly chooses an element of as.

raises Not_found

if the array/slice is empty.

val to_seq : 'a t -> 'a sequence

to_seq as returns a sequence of the elements of a slice as. The input slice as is shared with the sequence and modification of it will result in modification of the sequence.

val to_gen : 'a t -> 'a gen

to_gen as returns a gen of the elements of a slice as.

val to_klist : 'a t -> 'a klist

to_klist as returns a klist of the elements of a slice as.

IO

val pp : ?⁠sep:string -> 'a printer -> 'a t printer

pp ~sep pp_item ppf as formats the slice as on ppf. Each element is formatted with pp_item and elements are separated by sep (defaults to ", ").

val pp_i : ?⁠sep:string -> (int -> 'a printer) -> 'a t printer

pp_i ~sep pp_item ppf as prints the slice as on ppf. The printing function pp_item is giving both index and element. Elements are separated by sep (defaults to ", ").

\ No newline at end of file diff --git a/dev/containers.data/CCDeque/.jbuilder-keep b/dev/containers/CCBV/.dune-keep similarity index 100% rename from dev/containers.data/CCDeque/.jbuilder-keep rename to dev/containers/CCBV/.dune-keep diff --git a/dev/containers/CCBV/index.html b/dev/containers/CCBV/index.html new file mode 100644 index 00000000..e498ca78 --- /dev/null +++ b/dev/containers/CCBV/index.html @@ -0,0 +1,2 @@ + +CCBV (containers.CCBV)

Module CCBV

Imperative Bitvectors

BREAKING CHANGES since 1.2: size is now stored along with the bitvector. Some functions have a new signature.

The size of the bitvector used to be rounded up to the multiple of 30 or 62. In other words some functions such as iter would iterate on more bits than what was originally asked for. This is not the case anymore.

type t

A resizable bitvector

val empty : unit -> t

Empty bitvector.

val create : size:int -> bool -> t

Create a bitvector of given size, with given default value.

val copy : t -> t

Copy of bitvector.

val cardinal : t -> int

Number of bits set to one, seen as a set of bits.

val length : t -> int

Size of underlying bitvector. This is not related to the underlying implementation. Changed at 1.2

val capacity : t -> int

The number of bits this bitvector can store without resizing.

since
1.2
val resize : t -> int -> unit

Resize the BV so that it has the specified length. This can grow or shrink the underlying bitvector.

raises Invalid_arg

on negative sizes.

val is_empty : t -> bool

Are there any true bits?

val set : t -> int -> unit

Set i-th bit, extending the bitvector if needed.

val get : t -> int -> bool

Is the i-th bit true? Return false if the index is too high.

val reset : t -> int -> unit

Set i-th bit to 0, extending the bitvector if needed.

val flip : t -> int -> unit

Flip i-th bit, extending the bitvector if needed.

val clear : t -> unit

Set every bit to 0.

val iter : t -> (int -> bool -> unit) -> unit

Iterate on all bits.

val iter_true : t -> (int -> unit) -> unit

Iterate on bits set to 1.

val to_list : t -> int list

List of indexes that are true.

val to_sorted_list : t -> int list

Same as to_list, but also guarantees the list is sorted in increasing order.

val of_list : int list -> t

From a list of true bits.

The bits are interpreted as indices into the returned bitvector, so the final bitvector will have length t equal to 1 more than max of list indices.

val first : t -> int option

First set bit, or return None. Changed type at 1.2

val first_exn : t -> int

First set bit, or

raises Not_found

if all bits are 0.

since
1.2
val filter : t -> (int -> bool) -> unit

filter bv p only keeps the true bits of bv whose index satisfies p index.

val negate_self : t -> unit

negate_self t flips all of the bits in t.

since
1.2
val negate : t -> t

negate t returns a copy of t with all of the bits flipped.

val union_into : into:t -> t -> unit

union_into ~into bv sets into to the union of itself and bv. Also updates the length of into to be at least length bv.

val inter_into : into:t -> t -> unit

inter_into ~into bv sets into to the intersection of itself and bv. Also updates the length of into to be at most length bv.

val union : t -> t -> t

union bv1 bv2 returns the union of the two sets.

val inter : t -> t -> t

inter bv1 bv2 returns the intersection of the two sets.

val diff_into : into:t -> t -> unit

diff_into ~into t modifies into with only the bits set but not in t.

since
1.2
val diff : t -> t -> t

diff t1 t2 returns those bits found in t1 but not in t2.

since
1.2
val select : t -> 'a array -> 'a list

select arr bv selects the elements of arr whose index corresponds to a true bit in bv. If bv is too short, elements of arr with too high an index cannot be selected and are therefore not selected.

val selecti : t -> 'a array -> ('a * int) list

Same as select, but selected elements are paired with their indexes.

type 'a sequence = ('a -> unit) -> unit
val to_seq : t -> int sequence
val of_seq : int sequence -> t
val pp : Format.formatter -> t -> unit

Print the bitvector as a string of bits.

since
0.13
\ No newline at end of file diff --git a/dev/containers.data/CCFQueue/.jbuilder-keep b/dev/containers/CCBijection/.dune-keep similarity index 100% rename from dev/containers.data/CCFQueue/.jbuilder-keep rename to dev/containers/CCBijection/.dune-keep diff --git a/dev/containers/CCBijection/Make/argument-1-L/index.html b/dev/containers/CCBijection/Make/argument-1-L/index.html new file mode 100644 index 00000000..a29a20a6 --- /dev/null +++ b/dev/containers/CCBijection/Make/argument-1-L/index.html @@ -0,0 +1,2 @@ + +1-L (containers.CCBijection.Make.1-L)

Parameter Make.1-L

type t
val compare : t -> t -> int
\ No newline at end of file diff --git a/dev/containers/CCBijection/Make/argument-2-R/index.html b/dev/containers/CCBijection/Make/argument-2-R/index.html new file mode 100644 index 00000000..01f808ca --- /dev/null +++ b/dev/containers/CCBijection/Make/argument-2-R/index.html @@ -0,0 +1,2 @@ + +2-R (containers.CCBijection.Make.2-R)

Parameter Make.2-R

type t
val compare : t -> t -> int
\ No newline at end of file diff --git a/dev/containers/CCBijection/Make/index.html b/dev/containers/CCBijection/Make/index.html new file mode 100644 index 00000000..fa6d33b4 --- /dev/null +++ b/dev/containers/CCBijection/Make/index.html @@ -0,0 +1,2 @@ + +Make (containers.CCBijection.Make)

Module CCBijection.Make

Parameters

Signature

type t
type left = L.t
type right = R.t
val empty : t
val is_empty : t -> bool
val equal : t -> t -> bool
val compare : t -> t -> int
val add : left -> right -> t -> t

Add left and right correspondence to bijection such that left and right are unique in their respective sets and only correspond to each other.

val cardinal : t -> int

Number of bindings. O(n) time.

val mem : left -> right -> t -> bool

Check both sides for key membership.

val mem_left : left -> t -> bool

Check for membership of correspondence using left key.

val mem_right : right -> t -> bool

Check for membership of correspondence using right key.

val find_left : left -> t -> right
raises Not_found

if left is not found.

val find_right : right -> t -> left
raises Not_found

if right is not found.

val remove : left -> right -> t -> t

Remove the left, right binding if it exists. Return the same bijection otherwise.

val remove_left : left -> t -> t

Remove the binding with left key if it exists. Return the same bijection otherwise.

val remove_right : right -> t -> t

Remove the binding with right key if it exists. Return the same bijection otherwise.

val list_left : t -> (left * right) list

Return the bindings as a list of (left, right) values.

val list_right : t -> (right * left) list

Return the bindings as a list of (right, left) values.

val add_seq : (left * right) sequence -> t -> t
val of_seq : (left * right) sequence -> t
val to_seq : t -> (left * right) sequence
val add_list : (left * right) list -> t -> t
val of_list : (left * right) list -> t
val to_list : t -> (left * right) list
\ No newline at end of file diff --git a/dev/containers/CCBijection/index.html b/dev/containers/CCBijection/index.html new file mode 100644 index 00000000..abacce9e --- /dev/null +++ b/dev/containers/CCBijection/index.html @@ -0,0 +1,2 @@ + +CCBijection (containers.CCBijection)

Module CCBijection

Bijection

Represents 1-to-1 mappings between two types. Each element from the "left" is mapped to one "right" value, and conversely.

since
2.1
type 'a sequence = ('a -> unit) -> unit
module type OrderedType = sig ... end
module type S = sig ... end
module Make : functor (L : OrderedType) -> functor (R : OrderedType) -> S with type left = L.t and type right = R.t
\ No newline at end of file diff --git a/dev/containers/CCBijection/module-type-OrderedType/index.html b/dev/containers/CCBijection/module-type-OrderedType/index.html new file mode 100644 index 00000000..a3f78633 --- /dev/null +++ b/dev/containers/CCBijection/module-type-OrderedType/index.html @@ -0,0 +1,2 @@ + +OrderedType (containers.CCBijection.OrderedType)

Module type CCBijection.OrderedType

type t
val compare : t -> t -> int
\ No newline at end of file diff --git a/dev/containers/CCBijection/module-type-S/index.html b/dev/containers/CCBijection/module-type-S/index.html new file mode 100644 index 00000000..838024de --- /dev/null +++ b/dev/containers/CCBijection/module-type-S/index.html @@ -0,0 +1,2 @@ + +S (containers.CCBijection.S)

Module type CCBijection.S

type t
type left
type right
val empty : t
val is_empty : t -> bool
val equal : t -> t -> bool
val compare : t -> t -> int
val add : left -> right -> t -> t

Add left and right correspondence to bijection such that left and right are unique in their respective sets and only correspond to each other.

val cardinal : t -> int

Number of bindings. O(n) time.

val mem : left -> right -> t -> bool

Check both sides for key membership.

val mem_left : left -> t -> bool

Check for membership of correspondence using left key.

val mem_right : right -> t -> bool

Check for membership of correspondence using right key.

val find_left : left -> t -> right
raises Not_found

if left is not found.

val find_right : right -> t -> left
raises Not_found

if right is not found.

val remove : left -> right -> t -> t

Remove the left, right binding if it exists. Return the same bijection otherwise.

val remove_left : left -> t -> t

Remove the binding with left key if it exists. Return the same bijection otherwise.

val remove_right : right -> t -> t

Remove the binding with right key if it exists. Return the same bijection otherwise.

val list_left : t -> (left * right) list

Return the bindings as a list of (left, right) values.

val list_right : t -> (right * left) list

Return the bindings as a list of (right, left) values.

val add_seq : (left * right) sequence -> t -> t
val of_seq : (left * right) sequence -> t
val to_seq : t -> (left * right) sequence
val add_list : (left * right) list -> t -> t
val of_list : (left * right) list -> t
val to_list : t -> (left * right) list
\ No newline at end of file diff --git a/dev/containers.data/CCFun_vec/.jbuilder-keep b/dev/containers/CCBitField/.dune-keep similarity index 100% rename from dev/containers.data/CCFun_vec/.jbuilder-keep rename to dev/containers/CCBitField/.dune-keep diff --git a/dev/containers/CCBitField/Make/argument-1-X/index.html b/dev/containers/CCBitField/Make/argument-1-X/index.html new file mode 100644 index 00000000..341a77e1 --- /dev/null +++ b/dev/containers/CCBitField/Make/argument-1-X/index.html @@ -0,0 +1,2 @@ + +1-X (containers.CCBitField.Make.1-X)

Parameter Make.1-X

\ No newline at end of file diff --git a/dev/containers/CCBitField/Make/index.html b/dev/containers/CCBitField/Make/index.html new file mode 100644 index 00000000..05789b1d --- /dev/null +++ b/dev/containers/CCBitField/Make/index.html @@ -0,0 +1,2 @@ + +Make (containers.CCBitField.Make)

Module CCBitField.Make

Create a new bitfield type

Parameters

  • X : sig ... end

Signature

type t = private int

Generative type of bitfields. Each instantiation of the functor should create a new, incompatible type

val empty : t

Empty bitfields (all bits 0).

type field
val get : field -> t -> bool

Get the value of this field.

val set : field -> bool -> t -> t

Set the value of this field.

val mk_field : unit -> field

Make a new field.

val freeze : unit -> unit

Prevent new fields from being added. From now on, creating a field will raise Frozen.

val total_width : unit -> int

Current width of the bitfield.

\ No newline at end of file diff --git a/dev/containers/CCBitField/index.html b/dev/containers/CCBitField/index.html new file mode 100644 index 00000000..4785f42d --- /dev/null +++ b/dev/containers/CCBitField/index.html @@ -0,0 +1,12 @@ + +CCBitField (containers.CCBitField)

Module CCBitField

Bit Field

This module defines efficient bitfields up to 30 or 62 bits (depending on the architecture) in a relatively type-safe way.

module B = CCBitField.Make(struct end);;
+
+let x = B.mk_field ()
+let y = B.mk_field ()
+let z = B.mk_field ()
+
+let f = B.empty |> B.set x true |> B.set y true;;
+
+assert (not (B.get z f)) ;;
+
+assert (f |> B.set z true |> B.get z);;
exception TooManyFields

Raised when too many fields are packed into one bitfield.

exception Frozen

Raised when a frozen bitfield is modified.

val max_width : int

System-dependent maximum width for a bitfield, typically 30 or 62.

module type S = sig ... end
module Make : functor (X : sig ... end) -> S

Create a new bitfield type

\ No newline at end of file diff --git a/dev/containers/CCBitField/module-type-S/index.html b/dev/containers/CCBitField/module-type-S/index.html new file mode 100644 index 00000000..62e1bbde --- /dev/null +++ b/dev/containers/CCBitField/module-type-S/index.html @@ -0,0 +1,2 @@ + +S (containers.CCBitField.S)

Module type CCBitField.S

Bitfield Signature

type t = private int

Generative type of bitfields. Each instantiation of the functor should create a new, incompatible type

val empty : t

Empty bitfields (all bits 0).

type field
val get : field -> t -> bool

Get the value of this field.

val set : field -> bool -> t -> t

Set the value of this field.

val mk_field : unit -> field

Make a new field.

val freeze : unit -> unit

Prevent new fields from being added. From now on, creating a field will raise Frozen.

val total_width : unit -> int

Current width of the bitfield.

\ No newline at end of file diff --git a/dev/containers.data/CCGraph/.jbuilder-keep b/dev/containers/CCBlockingQueue/.dune-keep similarity index 100% rename from dev/containers.data/CCGraph/.jbuilder-keep rename to dev/containers/CCBlockingQueue/.dune-keep diff --git a/dev/containers/CCBlockingQueue/index.html b/dev/containers/CCBlockingQueue/index.html new file mode 100644 index 00000000..afd11709 --- /dev/null +++ b/dev/containers/CCBlockingQueue/index.html @@ -0,0 +1,2 @@ + +CCBlockingQueue (containers.CCBlockingQueue)

Module CCBlockingQueue

Blocking Queue

This queue has a limited size. Pushing a value on the queue when it is full will block.

since
0.16
type 'a t

Safe-thread queue for values of type 'a

val create : int -> 'a t

Create a new queue of size n. Using n=max_int amounts to using an infinite queue (2^61 items is a lot to fit in memory); using n=1 amounts to using a box with 0 or 1 elements inside.

raises Invalid_argument

if n < 1.

val push : 'a t -> 'a -> unit

push q x pushes x into q, blocking if the queue is full.

val take : 'a t -> 'a

Take the first element, blocking if needed.

val push_list : 'a t -> 'a list -> unit

Push items of the list, one by one.

val take_list : 'a t -> int -> 'a list

take_list n q takes n elements out of q.

val try_take : 'a t -> 'a option

Take the first element if the queue is not empty, return None otherwise.

val try_push : 'a t -> 'a -> bool

try_push q x pushes x into q if q is not full, in which case it returns true. If it fails because q is full, it returns false.

val peek : 'a t -> 'a option

peek q returns Some x if x is the first element of q, otherwise it returns None.

val size : _ t -> int

Number of elements currently in the queue.

val capacity : _ t -> int

Number of values the queue can hold.

\ No newline at end of file diff --git a/dev/containers/CCBool.odoc b/dev/containers/CCBool.odoc deleted file mode 100644 index 5d765f7e98795da9c46ee007587b8a222574b81e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 866 zcma)4O-NKx6dvpjXhOIU(jt8R%{Zd-p7}#T(bcJu7L}q!uH^dWj`Q%%z2kdtMl5jE zqD8^gP$?s>meC?|C`611LqY;A`av*S1ktKMH?|3)^WHSzvc-YRJ>NO!`@VB{jO&d} z;iF;g+T_ERKA$fD;fE-ND9P6AoH@i`)Usy-kw^#UCf3&1`^z_eNBx`S>Q+LKTe-@8 z`=J6l6!bwHF7)|oeDeS5QGt+hsU1tv(m`xPSKKj5Jk4~+;LOGtqe3YI9qD+ST0*-! z({}vB$&u*m;f1s+7kfBxxGV zp%x=%lv_#Sc%y8gjXt??V5w(e=yb)`-b-uK#V{!c5Za-GJ-2J3lifSP&hDO19~Y&p z@1j-)IA$nR&Y+)ProWdo9BHYW*uJtgCuQwLJwbqCpLy0UTU_;D?Ofh;#&+Lhk!`ju zUDdfo)trrC;8Uck37({?Z6rBUN4Pa)r-)7gmN#APA4nT!OpVbvNt=%LYvBb?d@Hnz z|J;1_Zo6ru9Sb?JGLKp-9U(DZ!B{*HVyb4qT@=Q0GW!@sf;vy8h(*C=Q55Xu4lxyO z#i(VlL4`BL1yjQ81_g*1Cb1NUEAo+;o82Q9=exj~D#I8*#V}|dT}IWpC-S==Q`KN{ zZY-^(!)am)q%yuY=<>{jn9+y+t^YBhE1&+Xp z2t-%Fs!9S53Lt-f99<8^y`zCF$bgjRa+(>?IH%-URVpRWm}kl|s*tY8I3)33k$+iD diff --git a/dev/containers.data/CCHashSet/.jbuilder-keep b/dev/containers/CCBool/.dune-keep similarity index 100% rename from dev/containers.data/CCHashSet/.jbuilder-keep rename to dev/containers/CCBool/.dune-keep diff --git a/dev/containers/CCBool/index.html b/dev/containers/CCBool/index.html index 9227de80..74800074 100644 --- a/dev/containers/CCBool/index.html +++ b/dev/containers/CCBool/index.html @@ -1,2 +1,2 @@ -CCBool (containers.CCBool)

Module CCBool

Basic Bool functions

type t = bool
val compare : t -> t -> int

Total ordering on booleans, similar to Pervasives.compare.

val equal : t -> t -> bool
val negate : t -> t

Negation on booleans (functional version of not).

deprecated

since 1.3, simply use not instead.

type 'a printer = Format.formatter -> 'a -> unit
val pp : t printer
\ No newline at end of file +CCBool (containers.CCBool)

Module CCBool

Basic Bool functions

type t = bool
val compare : t -> t -> int

Total ordering on booleans, similar to Pervasives.compare.

val equal : t -> t -> bool
val to_int : t -> int

to_int true = 1, to_int false = 0.

since
NEXT_RELEASE
val of_int : int -> t

of_int i is the same as i <> 0

since
NEXT_RELEASE
val negate : t -> t

Negation on booleans (functional version of not).

deprecated

since 1.3, simply use not instead.

type 'a printer = Format.formatter -> 'a -> unit
val pp : t printer
\ No newline at end of file diff --git a/dev/containers.data/CCHashTrie/.jbuilder-keep b/dev/containers/CCCache/.dune-keep similarity index 100% rename from dev/containers.data/CCHashTrie/.jbuilder-keep rename to dev/containers/CCCache/.dune-keep diff --git a/dev/containers/CCCache/index.html b/dev/containers/CCCache/index.html new file mode 100644 index 00000000..6e07c2ad --- /dev/null +++ b/dev/containers/CCCache/index.html @@ -0,0 +1,15 @@ + +CCCache (containers.CCCache)

Module CCCache

Caches

Particularly useful for memoization. See with_cache and with_cache_rec for more details.

since
0.6
type 'a equal = 'a -> 'a -> bool
type 'a hash = 'a -> int

Value interface

Typical use case: one wants to memoize a function f : 'a -> 'b. Code sample:

let f x =
+  print_endline "call f";
+  x + 1;;
+
+let f' = with_cache (lru 256) f;;
+f' 0;;  (* prints *)
+f' 1;;  (* prints *)
+f' 0;;  (* doesn't print, returns cached value *)
since
0.6
type ('a, 'b) t
val clear : (__) t -> unit

Clear the content of the cache.

type ('a, 'b) callback = in_cache:bool -> 'a -> 'b -> unit

Type of the callback that is called once a cached value is found or not. Should never raise.

parameter in_cache

is true if the value was in cache, false if the value was just produced.

since
1.3
val with_cache : ?⁠cb:('a'b) callback -> ('a'b) t -> ('a -> 'b) -> 'a -> 'b

with_cache c f behaves like f, but caches calls to f in the cache c. It always returns the same value as f x, if f x returns, or raise the same exception. However, f may not be called if x is in the cache.

parameter cb

called after the value is generated or retrieved.

val with_cache_rec : ?⁠cb:('a'b) callback -> ('a'b) t -> (('a -> 'b) -> 'a -> 'b) -> 'a -> 'b

with_cache_rec c f is a function that first, applies f to some f' = fix f, such that recursive calls to f' are cached in c. It is similar to with_cache but with a function that takes as first argument its own recursive version. Example (memoized Fibonacci function):

let fib = with_cache_rec (lru 256)
+    (fun fib' n -> match n with
+       | 1 | 2 -> 1
+       | _ -> fib' (n-1) + fib' (n-2)
+    );;
+
+fib 70;;
parameter cb

called after the value is generated or retrieved.

val size : (__) t -> int

Size of the cache (number of entries). At most linear in the number of entries.

val iter : ('a'b) t -> ('a -> 'b -> unit) -> unit

Iterate on cached values. Should yield size cache pairs.

val add : ('a'b) t -> 'a -> 'b -> bool

Manually add a cached value. Return true if the value has successfully been added, and false if the value was already bound.

since
1.5
val dummy : ('a'b) t

Dummy cache, never stores any value.

val linear : eq:'a equal -> int -> ('a'b) t

Linear cache with the given size. It stores key/value pairs in an array and does linear search at every call, so it should only be used with small size.

parameter eq

optional equality predicate for keys.

val replacing : eq:'a equal -> ?⁠hash:'a hash -> int -> ('a'b) t

Replacing cache of the given size. Equality and hash functions can be parametrized. It's a hash table that handles collisions by replacing the old value with the new (so a cache entry is evicted when another entry with the same hash (modulo size) is added). Never grows wider than the given size.

val lru : eq:'a equal -> ?⁠hash:'a hash -> int -> ('a'b) t

LRU cache of the given size ("Least Recently Used": keys that have not been used recently are deleted first). Never grows wider than the given size.

val unbounded : eq:'a equal -> ?⁠hash:'a hash -> int -> ('a'b) t

Unbounded cache, backed by a Hash table. Will grow forever unless clear is called manually.

\ No newline at end of file diff --git a/dev/containers/CCChar.odoc b/dev/containers/CCChar.odoc deleted file mode 100644 index 3f7dc4a193c865a6f503355daf3f147eca42ac17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2236 zcmbVOU2GIp6y7DXhL%7YqX;Iz)NU8Hw7b*t6Nr*bSzWAz2rM-cjrDfsPWOh{xx?I< zmSQwMK-5H%Tc9OaqnB!hD3Qj55PdKuV2BSGMPnk8NKAN9iM-%XeDT~nyIadoqCQO1 z^q%{j?|kQ+@0Qxs>gddM<&1r!?|qs`Br@=&;JXjLrl~fIdLben4%o3wp-?EJz%-VW zUw-ZQ{JBjRmt8*p!`Xd%)LnaO2JKwd*f!7%G0Y`{Ipa@#m}%9fiUc>d^`f z{4%k)adYcbe*DQ#hCdG;yKwofFU|?Eu7D~o@j@JU$Su;Kg2Ii65sPtS_`}y1oGG2! z_2{yzJD$351Tv*%sodyUWIglB*q0y7e|G1?hw}%12MX~`Zanxv>1et*y6wjDP1{P} ze0^GowyiiA1jIoMkmK4fSB_k3YG1N?#lc_qem5aRYp*Pb8#~<|w&?V^)C-$F{x*E+ z=2s@4TEzk@Z_xnfV~uk_v>~4_(+bWrQlVachz7fuk1PyfwT|Tb`Xl1nc^f+@azkTv z(`f&n`v)c$|8||6y8rt2Zj+0n)7m3knC8ggkr6RAeNro?Eox(~&HKoFm-Df-5?TJ% z0@9cw+e&Qgg(Ms{#pu*YZD)&B4!E{dMQaP>9c^KJ`cz1+ct{sWdYe5TT&{(>kQrA?iyVe$Y z3^}+@wdDOc`V9p&F{^W?=+;gt7B{QdLhubc%2-#KbSLtxkWf!|XrQ)?)g+%xB@^1_ zSu9s5mZ{{tdO-lzut}oD6%rOffdV@HC#E^9WoWoQ7P~u54BxJH@WDvQMUVUz7qS_lH z2HU0pdP^PMr9w~7%&E?Bn2Rm6%c$~tPVqujUiNKM{y%ut7iA{%f9Dk_UQw0To;K?A zfhG0fJsvy{JlpLO=oDz8v{$_}r8z-Q8ai{0+i@5Lo{~XYTC8Aw_+n|R;(-5wCdZ8) z4`d~FU#+2T-3XRaz~DjE0s?JD<) zOw3*KHcGIuI`o*yg`@_{N9OC;jy+gjTXzCl0VN*teZg1iFm@K! z;Xj9X^4}RrC9gJz)gk*sm6DD;0*?y#VQNkSuH6Z()rZ#t7W$5WKV`w9;GqUDiGfo| LWsBNU@Y%ls>Fa6` diff --git a/dev/containers.data/CCHet/.jbuilder-keep b/dev/containers/CCChar/.dune-keep similarity index 100% rename from dev/containers.data/CCHet/.jbuilder-keep rename to dev/containers/CCChar/.dune-keep diff --git a/dev/containers/CCChar/index.html b/dev/containers/CCChar/index.html index c544f98a..24637394 100644 --- a/dev/containers/CCChar/index.html +++ b/dev/containers/CCChar/index.html @@ -1,2 +1,2 @@ -CCChar (containers.CCChar)

Module CCChar

Utils around char

since
0.14
include module type of sig ... end
val code : char -> int
val chr : int -> char
val escaped : char -> string
val lowercase : char -> char
val uppercase : char -> char
val lowercase_ascii : char -> char
val uppercase_ascii : char -> char
type t = char
val compare : t -> t -> int
val equal : t -> t -> bool
val unsafe_chr : int -> char
val equal : t -> t -> bool

The equal function for chars.

val compare : t -> t -> int

The comparison function for characters, with the same specification as Pervasives.compare. Along with the type t, this function compare allows the module Char to be passed as argument to the functors Set.Make and Map.Make.

val lowercase_ascii : t -> t

Convert the given character to its equivalent lowercase character, using the US-ASCII character set.

since
0.20
val uppercase_ascii : t -> t

Convert the given character to its equivalent uppercase character, using the US-ASCII character set.

since
0.20
val of_int_exn : int -> t

Alias to Char.chr. Return the character with the given ASCII code.

raises Invalid_argument

if the int is not within 0,...,255.

since
1.0
val of_int : int -> t option

Safe version of of_int_exn.

since
1.0
val to_int : t -> int

Alias to Char.code. Return the ASCII code of the argument.

since
1.0
val pp_buf : Buffer.t -> t -> unit

Renamed from pp since 2.0.

val pp : Format.formatter -> t -> unit

Renamed from print since 2.0.

\ No newline at end of file +CCChar (containers.CCChar)

Module CCChar

Utils around char

since
0.14
include module type of sig ... end
val code : char -> int
val chr : int -> char
val escaped : char -> string
val lowercase : char -> char
val uppercase : char -> char
val lowercase_ascii : char -> char
val uppercase_ascii : char -> char
type t = char
val compare : t -> t -> int
val equal : t -> t -> bool
val unsafe_chr : int -> char
val equal : t -> t -> bool

The equal function for chars.

val compare : t -> t -> int

The comparison function for characters, with the same specification as Pervasives.compare. Along with the type t, this function compare allows the module Char to be passed as argument to the functors Set.Make and Map.Make.

val lowercase_ascii : t -> t

Convert the given character to its equivalent lowercase character, using the US-ASCII character set.

since
0.20
val uppercase_ascii : t -> t

Convert the given character to its equivalent uppercase character, using the US-ASCII character set.

since
0.20
val of_int_exn : int -> t

Alias to Char.chr. Return the character with the given ASCII code.

raises Invalid_argument

if the int is not within 0,...,255.

since
1.0
val of_int : int -> t option

Safe version of of_int_exn.

since
1.0
val to_int : t -> int

Alias to Char.code. Return the ASCII code of the argument.

since
1.0
val to_string : t -> string

to_string c return a string containing c

since
NEXT_RELEASE
val pp_buf : Buffer.t -> t -> unit

Renamed from pp since 2.0.

val pp : Format.formatter -> t -> unit

Renamed from print since 2.0.

\ No newline at end of file diff --git a/dev/containers.data/CCImmutArray/.jbuilder-keep b/dev/containers/CCDeque/.dune-keep similarity index 100% rename from dev/containers.data/CCImmutArray/.jbuilder-keep rename to dev/containers/CCDeque/.dune-keep diff --git a/dev/containers/CCDeque/index.html b/dev/containers/CCDeque/index.html new file mode 100644 index 00000000..355ea697 --- /dev/null +++ b/dev/containers/CCDeque/index.html @@ -0,0 +1,2 @@ + +CCDeque (containers.CCDeque)

Module CCDeque

Imperative deque

This structure provides fast access to its front and back elements, with O(1) operations.

type 'a t

Contains 'a elements, queue in both ways

exception Empty
val create : unit -> 'a t

New deque.

val clear : _ t -> unit

Remove all elements.

since
0.13
val is_empty : 'a t -> bool

Is the deque empty?

val equal : eq:('a -> 'a -> bool) -> 'a t -> 'a t -> bool

equal a b checks whether a and b contain the same sequence of elements.

parameter eq

comparison function for elements.

since
0.13
val compare : cmp:('a -> 'a -> int) -> 'a t -> 'a t -> int

compare a b compares lexicographically a and b.

parameter cmp

comparison function for elements.

since
0.13
val length : 'a t -> int

Number of elements. Used to be linear time, now constant time.

val push_front : 'a t -> 'a -> unit

Push value at the front.

val push_back : 'a t -> 'a -> unit

Push value at the back.

val peek_front : 'a t -> 'a

First value.

raises Empty

if empty.

val peek_front_opt : 'a t -> 'a option

First value.

since
NEXT_RELEASE
val peek_back : 'a t -> 'a

Last value.

raises Empty

if empty.

val peek_back_opt : 'a t -> 'a option

Last value.

since
NEXT_RELEASE
val remove_back : 'a t -> unit

Remove last value. If the deque is empty do nothing

since
NEXT_RELEASE
val remove_front : 'a t -> unit

Remove first value. If the deque is empty do nothing

since
NEXT_RELEASE
val take_back : 'a t -> 'a

Take last value.

raises Empty

if empty.

val take_back_opt : 'a t -> 'a option

Take last value.

since
NEXT_RELEASE
val take_front : 'a t -> 'a

Take first value.

raises Empty

if empty.

val take_front_opt : 'a t -> 'a option

Take first value.

since
NEXT_RELEASE
val update_back : 'a t -> ('a -> 'a option) -> unit

Update last value. If the deque is empty do nothing. If the function returns None, remove last element; if it returns Some x, replace last element with x.

since
NEXT_RELEASE
val update_front : 'a t -> ('a -> 'a option) -> unit

Update first value. If the deque is empty do nothing. Similar to update_back but for the first value.

since
NEXT_RELEASE
val append_front : into:'a t -> 'a t -> unit

append_front ~into q adds all elements of q at the front of into. O(length q) in time.

since
0.13
val append_back : into:'a t -> 'a t -> unit

append_back ~into q adds all elements of q at the back of into. O(length q) in time.

since
0.13
val iter : ('a -> unit) -> 'a t -> unit

Iterate on elements.

val fold : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b

Fold on elements.

since
0.13

Conversions

type 'a gen = unit -> 'a option
type 'a sequence = ('a -> unit) -> unit
val of_seq : 'a sequence -> 'a t

Create a deque from the sequence. Optional argument deque disappears, use add_seq_back instead.

since
0.13
val to_seq : 'a t -> 'a sequence

Iterate on the elements.

val of_gen : 'a gen -> 'a t

of_gen g makes a deque containing the elements of g.

since
0.13
val to_gen : 'a t -> 'a gen

Iterate on the elements of the deque.

since
0.13
val add_seq_front : 'a t -> 'a sequence -> unit

add_seq_front q seq adds elements of seq into the front of q, in reverse order. O(n) in time, where n is the number of elements to add.

since
0.13
val add_seq_back : 'a t -> 'a sequence -> unit

add_seq_back q seq adds elements of seq into the back of q, in order. O(n) in time, where n is the number of elements to add.

since
0.13
val copy : 'a t -> 'a t

Fresh copy, O(n) in time.

val of_list : 'a list -> 'a t

Conversion from list, in order.

since
0.13
val to_list : 'a t -> 'a list

List of elements, in order. Less efficient than to_rev_list.

since
0.13
val to_rev_list : 'a t -> 'a list

Efficient conversion to list, in reverse order.

since
0.13
val filter : ('a -> bool) -> 'a t -> 'a t

Filter into a new copy.

since
NEXT_RELEASE
val filter_map : ('a -> 'b option) -> 'a t -> 'b t

Filter map into a new copy

since
NEXT_RELEASE
val filter_in_place : 'a t -> ('a -> bool) -> unit

Keep only elements that satisfy the predicate.

since
NEXT_RELEASE

print

type 'a printer = Format.formatter -> 'a -> unit
val pp : 'a printer -> 'a t printer

Print the elements.

since
0.13
\ No newline at end of file diff --git a/dev/containers/CCEqual.odoc b/dev/containers/CCEqual.odoc deleted file mode 100644 index b15c5d5959502faa4807c47d5380c3cd2a2db8cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1602 zcma)6L17~YL@@Gad6_qx z?vv`NAZib@4YAmwOskb1M3*221U1k@=|w&0L8%~$hp3t5SRvpM^~qt&877&_UyXYTzIba z^VeLxc{Ovpvc8-^b9LBlPPA@JrY=BQmLIqTgiqgK}C$3%x}>E3&tbc zwygt79d0&Huz>lDhaKw3`rju9wJXnj7T@Mew|;o{tD8za*2KO?13`Fzy=BIIERN!c zI+3i$A6igc|9tuTYqlIT zBJR{2#z`%`con$EYqbvZNiCv23uUyDNQ5Xif$Q|+ZzmwN45o4B~^iTcr3e_U>S zJ2AFP?pr!D5Wg?lQeBo(*=lnVgtyhj-RoAhAV2{*ZV#{Tb^}LH7F5xRZX{5PAi;4E zQ33r{P!#(<5u7>|go8HX#PvuIB30Yo1)c&1$>g>ThWYotly4PVjCtTzTZ0d+W5tkp zu`ao=B7gz&HqxF{TSWArVG6(p*z4AcRWhswe7YQVVo()(nqYoJkb3u_;f}Ccn!`Fc zBJd|+MxcQ47nJT!d(z%snTp_M!K$<-G_G#qsV_~rU@jxALptF}onW0xLvNQ{k6|IL ziuOKjz=5 zYQOnzddp=CQy^sM5ovvrWPi60dBumlnKORM0AHWPn)f3~@w+RKL(uvSbz(>{!XUNK zQJGX%tEm&i&coYmBbO4dJ!43rl_2jhKg68q##ls9$`67^=qwc-V0&0MKUd8!^{@}( z9LcNxoVgV|GuT2UA4fxy4eWJ+i@8X|Ap!7g8B)+Jn#MCq9zm^G3qX0^r5xZI#{v=v zcsJYd2lIgO7>#q;c_TQiQZBm)CQhZjTq-Y|dtydErN*(qr9CYtg~C9i3#%Ivw(mt7 zAcoZtoHkse62=KCX;%5ywOsbglHr0{r}};KYRB)X&g=iK^V)yaF?$BTB=8dh=O0kz Bdk+8r diff --git a/dev/containers.data/CCIntMap/.jbuilder-keep b/dev/containers/CCEqual/.dune-keep similarity index 100% rename from dev/containers.data/CCIntMap/.jbuilder-keep rename to dev/containers/CCEqual/.dune-keep diff --git a/dev/containers/CCEqual/Infix/index.html b/dev/containers/CCEqual/Infix/index.html index e27f133e..f91c735c 100644 --- a/dev/containers/CCEqual/Infix/index.html +++ b/dev/containers/CCEqual/Infix/index.html @@ -1,2 +1,2 @@ -Infix (containers.CCEqual.Infix)

Module CCEqual.Infix

val (>|=) : 'b t -> ('a -> 'b) -> 'a t

Infix equivalent of map.

\ No newline at end of file +Infix (containers.CCEqual.Infix)

Module CCEqual.Infix

val (>|=) : 'b t -> ('a -> 'b) -> 'a t

Infix equivalent of map.

\ No newline at end of file diff --git a/dev/containers/CCEqual/index.html b/dev/containers/CCEqual/index.html index 2f48a084..8f3a3de8 100644 --- a/dev/containers/CCEqual/index.html +++ b/dev/containers/CCEqual/index.html @@ -1,2 +1,2 @@ -CCEqual (containers.CCEqual)

Module CCEqual

Equality Combinators

type 'a t = 'a -> 'a -> bool

Equality function. Must be transitive, symmetric, and reflexive.

val poly : 'a t

Standard polymorphic equality.

val physical : 'a t

Standard physical equality.

since
2.0
val int : int t
val string : string t
val bool : bool t
val float : float t
val unit : unit t
val list : 'a t -> 'a list t
val array : 'a t -> 'a array t
val option : 'a t -> 'a option t
val pair : 'a t -> 'b t -> ('a * 'b) t
val triple : 'a t -> 'b t -> 'c t -> ('a * 'b * 'c) t
val map : ('a -> 'b) -> 'b t -> 'a t

map f eq is the equality function that, given objects x and y, projects x and y using f (e.g. using a record field) and then compares those projections with eq. Example: map fst int compares values of type (int * 'a) by their first component.

module Infix : sig ... end
include module type of Infix
val (>|=) : 'b t -> ('a -> 'b) -> 'a t

Infix equivalent of map.

\ No newline at end of file +CCEqual (containers.CCEqual)

Module CCEqual

Equality Combinators

type 'a t = 'a -> 'a -> bool

Equality function. Must be transitive, symmetric, and reflexive.

val poly : 'a t

Standard polymorphic equality.

val physical : 'a t

Standard physical equality.

since
2.0
val int : int t
val string : string t
val bool : bool t
val float : float t
val unit : unit t
val list : 'a t -> 'a list t
val array : 'a t -> 'a array t
val option : 'a t -> 'a option t
val pair : 'a t -> 'b t -> ('a * 'b) t
val triple : 'a t -> 'b t -> 'c t -> ('a * 'b * 'c) t
val map : ('a -> 'b) -> 'b t -> 'a t

map f eq is the equality function that, given objects x and y, projects x and y using f (e.g. using a record field) and then compares those projections with eq. Example: map fst int compares values of type (int * 'a) by their first component.

module Infix : sig ... end
include module type of Infix
val (>|=) : 'b t -> ('a -> 'b) -> 'a t

Infix equivalent of map.

\ No newline at end of file diff --git a/dev/containers.data/CCMixmap/.jbuilder-keep b/dev/containers/CCEqualLabels/.dune-keep similarity index 100% rename from dev/containers.data/CCMixmap/.jbuilder-keep rename to dev/containers/CCEqualLabels/.dune-keep diff --git a/dev/containers/CCEqualLabels/Infix/index.html b/dev/containers/CCEqualLabels/Infix/index.html new file mode 100644 index 00000000..c47fc9c5 --- /dev/null +++ b/dev/containers/CCEqualLabels/Infix/index.html @@ -0,0 +1,2 @@ + +Infix (containers.CCEqualLabels.Infix)

Module CCEqualLabels.Infix

val (>|=) : 'b t -> ('a -> 'b) -> 'a t

Infix equivalent of map.

\ No newline at end of file diff --git a/dev/containers/CCEqualLabels/index.html b/dev/containers/CCEqualLabels/index.html new file mode 100644 index 00000000..186d7a4d --- /dev/null +++ b/dev/containers/CCEqualLabels/index.html @@ -0,0 +1,2 @@ + +CCEqualLabels (containers.CCEqualLabels)

Module CCEqualLabels

Equality Combinators

type 'a t = 'a -> 'a -> bool

Equality function. Must be transitive, symmetric, and reflexive.

val poly : 'a t

Standard polymorphic equality.

val physical : 'a t

Standard physical equality.

since
2.0
val int : int t
val string : string t
val bool : bool t
val float : float t
val unit : unit t
val list : 'a t -> 'a list t
val array : 'a t -> 'a array t
val option : 'a t -> 'a option t
val pair : 'a t -> 'b t -> ('a * 'b) t
val triple : 'a t -> 'b t -> 'c t -> ('a * 'b * 'c) t
val map : f:('a -> 'b) -> 'b t -> 'a t

map f eq is the equality function that, given objects x and y, projects x and y using f (e.g. using a record field) and then compares those projections with eq. Example: map fst int compares values of type (int * 'a) by their first component.

module Infix : sig ... end
include module type of Infix
val (>|=) : 'b t -> ('a -> 'b) -> 'a t

Infix equivalent of map.

\ No newline at end of file diff --git a/dev/containers.data/CCMixset/.jbuilder-keep b/dev/containers/CCFQueue/.dune-keep similarity index 100% rename from dev/containers.data/CCMixset/.jbuilder-keep rename to dev/containers/CCFQueue/.dune-keep diff --git a/dev/containers/CCFQueue/index.html b/dev/containers/CCFQueue/index.html new file mode 100644 index 00000000..23c80634 --- /dev/null +++ b/dev/containers/CCFQueue/index.html @@ -0,0 +1,2 @@ + +CCFQueue (containers.CCFQueue)

Module CCFQueue

Functional queues

type 'a sequence = ('a -> unit) -> unit
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a equal = 'a -> 'a -> bool
type 'a printer = Format.formatter -> 'a -> unit

Basics

type +'a t

Queue containing elements of type 'a

val empty : 'a t
val is_empty : 'a t -> bool
val singleton : 'a -> 'a t
val doubleton : 'a -> 'a -> 'a t
exception Empty
val cons : 'a -> 'a t -> 'a t

Push element at the front of the queue.

val snoc : 'a t -> 'a -> 'a t

Push element at the end of the queue.

val take_front : 'a t -> ('a * 'a t) option

Get and remove the first element.

val take_front_exn : 'a t -> 'a * 'a t

Same as take_front, but fails on empty queues.

raises Empty

if the queue is empty.

val take_front_l : int -> 'a t -> 'a list * 'a t

take_front_l n q takes at most n elements from the front of q, and returns them wrapped in a list.

raises Invalid_argument

if n<0.

val take_front_while : ('a -> bool) -> 'a t -> 'a list * 'a t
val take_back : 'a t -> ('a t * 'a) option

Take last element.

val take_back_exn : 'a t -> 'a t * 'a

Same as take_back, but fails on empty queues.

raises Empty

if the queue is empty.

val take_back_l : int -> 'a t -> 'a t * 'a list

take_back_l n q removes and returns the last n elements of q. The elements are in the order of the queue, that is, the head of the returned list is the first element to appear via take_front. take_back_l 2 (of_list [1;2;3;4]) = of_list [1;2], [3;4].

raises Invalid_argument

if n<0.

val take_back_while : ('a -> bool) -> 'a t -> 'a t * 'a list

Individual extraction

val first : 'a t -> 'a option

First element of the queue.

val last : 'a t -> 'a option

Last element of the queue.

val first_exn : 'a t -> 'a

Same as first but

raises Empty

if the queue is empty.

val last_exn : 'a t -> 'a
val nth : int -> 'a t -> 'a option

Return the i-th element of the queue in logarithmic time.

val nth_exn : int -> 'a t -> 'a

Unsafe version of nth.

raises Not_found

if the index is wrong.

val tail : 'a t -> 'a t

Queue deprived of its first element. Does nothing on empty queues.

val init : 'a t -> 'a t

Queue deprived of its last element. Does nothing on empty queues.

Global Operations

val append : 'a t -> 'a t -> 'a t

Append two queues. Elements from the second one come after elements of the first one. Linear in the size of the second queue.

val rev : 'a t -> 'a t

Reverse the queue, O(n) complexity.

since
0.10
val map : ('a -> 'b) -> 'a t -> 'b t

Map values.

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Synonym to map.

val size : 'a t -> int

Number of elements in the queue (constant time).

val fold : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b
val iter : ('a -> unit) -> 'a t -> unit
val equal : 'a equal -> 'a t equal

Conversions

val of_list : 'a list -> 'a t
val to_list : 'a t -> 'a list
val add_seq_front : 'a sequence -> 'a t -> 'a t
val add_seq_back : 'a t -> 'a sequence -> 'a t
val to_seq : 'a t -> 'a sequence
val of_seq : 'a sequence -> 'a t
val to_klist : 'a t -> 'a klist
val of_klist : 'a klist -> 'a t
val (--) : int -> int -> int t

a -- b is the integer range from a to b, both included.

since
0.10
val (--^) : int -> int -> int t

a -- b is the integer range from a to b, where b is excluded.

since
0.17
val pp : 'a printer -> 'a t printer
since
0.13
\ No newline at end of file diff --git a/dev/containers/CCFloat.odoc b/dev/containers/CCFloat.odoc deleted file mode 100644 index a374701f1c3a58d8a4ccc3c717492b7a50386b2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4264 zcma)9e~c7Y9pBx16FE>yjIESfeaGzH&fe|q?j0wk2z21!D7L+${4fF2oO83Yw^L?k zwllN$qczk-BU&|?MScjh_CX7XQb1cc`ore1Xdx7|g<=m$+r-v{f&#IPsg2R^`!V!5 zj@mzVGw;36_xF$YeNNudo0>B%ncVl*?|3m1i6r4C!S4(3o3yV%cWhrXZNv4pCfnND zEl2a!-0TJ22miKt&&e~-e|YrYlhSu_(n+0>2zoaXnYcU>`P`Cmkw`p3J|zPb3kVsU ztCFC$VV>rhI(Ev2tNEs5d)TpYfyy=Qo~E*6+CH``rEbtjRmo2ixyU;#dvwe6+h3dA*Z%tlj$dkTKc6C`sjclE$977NTP~V+)qMZ6$4u;<4U2bb<$HUBGbFZ;&J8>u7?2y#=txO7vz zef_}h}X2d}EZzE;oGv%2FNSrOC>SYMmX7M+rj^~{oEXZsv?l~>ku18`vuWV^a6 zrj^g;je=IO{M_kVmJJ_0*PmEY`SA7X@DF}BR}IM8q3!7IIzJ$)I;5(>lR>Z{!Q!Vv zyy)S|WTC8En&$;*B11e;9bsd52&4fS+KFyRwJ+|nX+W$1eJKDQuz6z|HoZ!BxIb0w z-;#v=2MyN=kRrC~8ez+{3#M)QMu0M6J6TWJYIcBHVMitF_w7b&WV%5}kXrCSMYFK) zVDgJ#+tv}?ET zKT*&u4-Oi!;};FL&-4rk^lxaW(Rb+ohIqH*SVE92Yx(@Be5uBj#!QMkhtq8m^p7zv zM9|KWA$_lO}s6;tP z(Q$&s4jF0y)+-r*Df;;kcN53mEO3J|-|2>Q1SwxduRgBA^RG=pqW;AVb?`eNBp9NS0l8g#elifvf8@Xe|NIJyDgSe@+$H zwE|ZRaDX$GP8DcNqA^M_sljEohCm0Wf&O6LhkU8D4kj_jLJhO*(kZO{B;eJ|-P@s-& z&?F_*7MNDjxG4vJjqI;ELxMyaJ1!j3?o5I>Eo)M(16oBCcLqiUIhVOD6n~kDm!j_r z7pzUVPQ|9RTurhs+AwNoUg;Rn46trF9_?i`!aat|3nz^YlXeQICkJ{xDA8?LP9GH) z&t+P2LSAeflNXzyl66DBlw!M*%UrDtO$S_aUqGF(q2BW$d3wZMB*hLW)DvAsKl4UI zxS$TX9ru}*C6t3M3XK+^+&$FjIM!H`YffWmrg83?sZGr!n8EzyYS7oPW{)@eb)!s& zEbvyS(N*pP7x3no8Qcf$6UT@cjxsZQMP3+qCX(z-wri$Uap4x42ENoa2o+dX;G4{=Fs}2wLhHF= zdxX%tQ&)su>(}cETu%a+_-x&PySF8cDLx0MnqfgiQmieAof?GEJr)7}~D$;+Q#} z51eV3U&QR0#&q0FgPZsmMT-rZ5LRr*rzWtMO6p2J)*!0XcBy8YRCA|FHp7fd2IqmJ zvx|U1Kkj7D9*4hepo28u24|N5{4_i)01!wuJ=H3kR%>Ntb_%9!)@cC8)3By7{K#_i z_cHU*m*dK;Ib*=ZbR*Tw=kUWEK226;je%YsGGD>b!yJ95tc=C`{t#_*^glTIK2T*W z%^wco-(~Qc8V+~k%AB#_>q7X?I9$xjYhyrM}O}|HaAwDl1uT>U^`8)z&Ce(KtbfKFbKv4RF1{M52;SLlSx_ zkkGfP>!8%PN$44vzQ|liNGXbFdP(R7*pZ?U^bubUp-bo@dXFy-qqoqTXqYdKpcCjg zI>HyPpx>ew&>&y@3GGI|LOb~46ugx-qqThT23mu@k5===S>z!X-Om?qBOP_4m3;9I M>O>vzz);oy0prVcNdN!< diff --git a/dev/containers.data/CCMixtbl/.jbuilder-keep b/dev/containers/CCFloat/.dune-keep similarity index 100% rename from dev/containers.data/CCMixtbl/.jbuilder-keep rename to dev/containers/CCFloat/.dune-keep diff --git a/dev/containers/CCFloat/Infix/index.html b/dev/containers/CCFloat/Infix/index.html index 919c3ba1..078a90ad 100644 --- a/dev/containers/CCFloat/Infix/index.html +++ b/dev/containers/CCFloat/Infix/index.html @@ -1,2 +1,2 @@ -Infix (containers.CCFloat.Infix)

Module CCFloat.Infix

val (=) : t -> t -> bool
since
0.17
val (<>) : t -> t -> bool
since
0.17
val (<) : t -> t -> bool
since
0.17
val (>) : t -> t -> bool
since
0.17
val (<=) : t -> t -> bool
since
0.17
val (>=) : t -> t -> bool
since
0.17
val (+) : t -> t -> t

Addition.

since
2.1
val (-) : t -> t -> t

Subtraction.

since
2.1
val (~-) : t -> t

Unary negation.

since
2.1
val (*) : t -> t -> t

Multiplication.

since
2.1
val (/) : t -> t -> t

Division.

since
2.1
\ No newline at end of file +Infix (containers.CCFloat.Infix)

Module CCFloat.Infix

val (=) : t -> t -> bool
since
0.17
val (<>) : t -> t -> bool
since
0.17
val (<) : t -> t -> bool
since
0.17
val (>) : t -> t -> bool
since
0.17
val (<=) : t -> t -> bool
since
0.17
val (>=) : t -> t -> bool
since
0.17
val (+) : t -> t -> t

Addition.

since
2.1
val (-) : t -> t -> t

Subtraction.

since
2.1
val (~-) : t -> t

Unary negation.

since
2.1
val (*) : t -> t -> t

Multiplication.

since
2.1
val (/) : t -> t -> t

Division.

since
2.1
\ No newline at end of file diff --git a/dev/containers/CCFloat/index.html b/dev/containers/CCFloat/index.html index b2883875..f985dd42 100644 --- a/dev/containers/CCFloat/index.html +++ b/dev/containers/CCFloat/index.html @@ -1,2 +1,2 @@ -CCFloat (containers.CCFloat)

Module CCFloat

Basic operations on floating-point numbers

since
0.6.1
type t = float
type fpclass = Pervasives.fpclass =
| FP_normal
| FP_subnormal
| FP_zero
| FP_infinite
| FP_nan
val nan : t

Equal to Pervasives.nan.

val max_value : t

Positive infinity. Equal to Pervasives.infinity.

val min_value : t

Negative infinity. Equal to Pervasives.neg_infinity.

val max_finite_value : t

Equal to Pervasives.max_float.

val epsilon : t

The smallest positive float x such that 1.0 +. x <> 1.0. Equal to Pervasives.epsilon_float.

val is_nan : t -> bool

is_nan f returns true if f is NaN, false otherwise.

val add : t -> t -> t

Equal to (+.).

val sub : t -> t -> t

Equal to (-.).

val neg : t -> t

Equal to (~-.).

val abs : t -> t

The absolute value of a floating-point number. Equal to Pervasives.abs_float.

val scale : t -> t -> t

Equal to ( *. ).

val min : t -> t -> t
val max : t -> t -> t
val equal : t -> t -> bool
val compare : t -> t -> int
type 'a printer = Format.formatter -> 'a -> unit
type 'a random_gen = Random.State.t -> 'a
val pp : t printer
val hash : t -> int
val random : t -> t random_gen
val random_small : t random_gen
val random_range : t -> t -> t random_gen
val fsign : t -> t

fsign x is one of -1., -0., +0., +1., or nan if x is NaN.

since
0.7
val round : t -> t

round f returns the closest integer value, either above or below.

since
0.20
exception TrapNaN of string
val sign_exn : t -> int

sign_exn x will return the sign of x as 1, 0 or -1, or raise an exception TrapNaN if x is NaN. Note that infinities have defined signs in OCaml.

since
0.7
val to_int : t -> int

Alias to int_of_float. Unspecified if outside of the range of integers.

val of_int : int -> t

Alias to float_of_int.

val to_string : t -> string
val of_string_exn : string -> t

Alias to float_of_string.

raises Failure

in case of failure.

since
1.2
val of_string : string -> t

Alias to float_of_string.

deprecated

since 1.2, use of_string_exn instead.

raises Failure

in case of failure.

val equal_precision : epsilon:t -> t -> t -> bool

Equality with allowed error up to a non negative epsilon value.

val classify : t -> fpclass

Return the class of the given floating-point number: normal, subnormal, zero, infinite or nan (not a number).

Infix Operators

since
0.17
module Infix : sig ... end
include module type of Infix
val (=) : t -> t -> bool
since
0.17
val (<>) : t -> t -> bool
since
0.17
val (<) : t -> t -> bool
since
0.17
val (>) : t -> t -> bool
since
0.17
val (<=) : t -> t -> bool
since
0.17
val (>=) : t -> t -> bool
since
0.17
val (+) : t -> t -> t

Addition.

since
2.1
val (-) : t -> t -> t

Subtraction.

since
2.1
val (~-) : t -> t

Unary negation.

since
2.1
val (*) : t -> t -> t

Multiplication.

since
2.1
val (/) : t -> t -> t

Division.

since
2.1
\ No newline at end of file +CCFloat (containers.CCFloat)

Module CCFloat

Basic operations on floating-point numbers

since
0.6.1
type t = float
type fpclass = CCShims_.Stdlib.fpclass =
| FP_normal
| FP_subnormal
| FP_zero
| FP_infinite
| FP_nan
val nan : t

Equal to Stdlib.nan.

val max_value : t

Positive infinity. Equal to Stdlib.infinity.

val min_value : t

Negative infinity. Equal to Stdlib.neg_infinity.

val max_finite_value : t

Equal to Stdlib.max_float.

val epsilon : t

The smallest positive float x such that 1.0 +. x <> 1.0. Equal to Stdlib.epsilon_float.

val is_nan : t -> bool

is_nan f returns true if f is NaN, false otherwise.

val add : t -> t -> t

Equal to (+.).

val sub : t -> t -> t

Equal to (-.).

val neg : t -> t

Equal to (~-.).

val abs : t -> t

The absolute value of a floating-point number. Equal to Stdlib.abs_float.

val scale : t -> t -> t

Equal to ( *. ).

val min : t -> t -> t
val max : t -> t -> t
val equal : t -> t -> bool
val compare : t -> t -> int
type 'a printer = Format.formatter -> 'a -> unit
type 'a random_gen = Random.State.t -> 'a
val pp : t printer
val hash : t -> int
val random : t -> t random_gen
val random_small : t random_gen
val random_range : t -> t -> t random_gen
val fsign : t -> t

fsign x is one of -1., -0., +0., +1., or nan if x is NaN.

since
0.7
val round : t -> t

round f returns the closest integer value, either above or below.

since
0.20
exception TrapNaN of string
val sign_exn : t -> int

sign_exn x will return the sign of x as 1, 0 or -1, or raise an exception TrapNaN if x is NaN. Note that infinities have defined signs in OCaml.

since
0.7
val to_int : t -> int

Alias to int_of_float. Unspecified if outside of the range of integers.

val of_int : int -> t

Alias to float_of_int.

val to_string : t -> string
val of_string_exn : string -> t

Alias to float_of_string.

raises Failure

in case of failure.

since
1.2
val of_string : string -> t

Alias to float_of_string.

deprecated

since 1.2, use of_string_exn instead.

raises Failure

in case of failure.

val equal_precision : epsilon:t -> t -> t -> bool

Equality with allowed error up to a non negative epsilon value.

val classify : t -> fpclass

Return the class of the given floating-point number: normal, subnormal, zero, infinite or nan (not a number).

Infix Operators

since
0.17
module Infix : sig ... end
include module type of Infix
val (=) : t -> t -> bool
since
0.17
val (<>) : t -> t -> bool
since
0.17
val (<) : t -> t -> bool
since
0.17
val (>) : t -> t -> bool
since
0.17
val (<=) : t -> t -> bool
since
0.17
val (>=) : t -> t -> bool
since
0.17
val (+) : t -> t -> t

Addition.

since
2.1
val (-) : t -> t -> t

Subtraction.

since
2.1
val (~-) : t -> t

Unary negation.

since
2.1
val (*) : t -> t -> t

Multiplication.

since
2.1
val (/) : t -> t -> t

Division.

since
2.1
\ No newline at end of file diff --git a/dev/containers/CCFormat.odoc b/dev/containers/CCFormat.odoc deleted file mode 100644 index 993e0ef84dd433166efeeb9b21d5e467bdfd4906..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18641 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 diff --git a/dev/containers.data/CCMultiMap/.jbuilder-keep b/dev/containers/CCFormat/.dune-keep similarity index 100% rename from dev/containers.data/CCMultiMap/.jbuilder-keep rename to dev/containers/CCFormat/.dune-keep diff --git a/dev/containers/CCFormat/Dump/index.html b/dev/containers/CCFormat/Dump/index.html index 5c52cb74..92023a91 100644 --- a/dev/containers/CCFormat/Dump/index.html +++ b/dev/containers/CCFormat/Dump/index.html @@ -1,2 +1,2 @@ -Dump (containers.CCFormat.Dump)

Module CCFormat.Dump

type 'a t = 'a printer
val unit : unit t
val int : int t
val string : string t
val bool : bool t
val float : float t
val char : char t
val int32 : int32 t
val int64 : int64 t
val nativeint : nativeint t
val list : 'a t -> 'a list t
val array : 'a t -> 'a array t
val option : 'a t -> 'a option t
val pair : 'a t -> 'b t -> ('a * 'b) t
val triple : 'a t -> 'b t -> 'c t -> ('a * 'b * 'c) t
val quad : 'a t -> 'b t -> 'c t -> 'd t -> ('a * 'b * 'c * 'd) t
val result : 'a t -> ('a, string) Result.result t
val result' : 'a t -> 'e t -> ('a'e) Result.result t
val to_string : 'a t -> 'a -> string

Alias to CCFormat.to_string.

\ No newline at end of file +Dump (containers.CCFormat.Dump)

Module CCFormat.Dump

type 'a t = 'a printer
val unit : unit t
val int : int t
val string : string t
val bool : bool t
val float : float t
val char : char t
val int32 : int32 t
val int64 : int64 t
val nativeint : nativeint t
val list : 'a t -> 'a list t
val array : 'a t -> 'a array t
val option : 'a t -> 'a option t
val pair : 'a t -> 'b t -> ('a * 'b) t
val triple : 'a t -> 'b t -> 'c t -> ('a * 'b * 'c) t
val quad : 'a t -> 'b t -> 'c t -> 'd t -> ('a * 'b * 'c * 'd) t
val result : 'a t -> ('a, string) Result.result t
val result' : 'a t -> 'e t -> ('a'e) Result.result t
val to_string : 'a t -> 'a -> string

Alias to CCFormat.to_string.

\ No newline at end of file diff --git a/dev/containers/CCFormat/index.html b/dev/containers/CCFormat/index.html index 6c41e004..a7e60a81 100644 --- a/dev/containers/CCFormat/index.html +++ b/dev/containers/CCFormat/index.html @@ -1,14 +1,14 @@ -CCFormat (containers.CCFormat)

Module CCFormat

Helpers for Format

since
0.8
type 'a sequence = ('a -> unit) -> unit
include module type of sig ... end
type formatter = Format.formatter
val pp_open_box : formatter -> int -> unit
val open_box : int -> unit
val pp_close_box : formatter -> unit -> unit
val close_box : unit -> unit
val pp_open_hbox : formatter -> unit -> unit
val open_hbox : unit -> unit
val pp_open_vbox : formatter -> int -> unit
val open_vbox : int -> unit
val pp_open_hvbox : formatter -> int -> unit
val open_hvbox : int -> unit
val pp_open_hovbox : formatter -> int -> unit
val open_hovbox : int -> unit
val pp_print_string : formatter -> string -> unit
val print_string : string -> unit
val pp_print_as : formatter -> int -> string -> unit
val print_as : int -> string -> unit
val pp_print_int : formatter -> int -> unit
val print_int : int -> unit
val pp_print_float : formatter -> float -> unit
val print_float : float -> unit
val pp_print_char : formatter -> char -> unit
val print_char : char -> unit
val pp_print_bool : formatter -> bool -> unit
val print_bool : bool -> unit
val pp_print_space : formatter -> unit -> unit
val print_space : unit -> unit
val pp_print_cut : formatter -> unit -> unit
val print_cut : unit -> unit
val pp_print_break : formatter -> int -> int -> unit
val print_break : int -> int -> unit
val pp_force_newline : formatter -> unit -> unit
val force_newline : unit -> unit
val pp_print_if_newline : formatter -> unit -> unit
val print_if_newline : unit -> unit
val pp_print_flush : formatter -> unit -> unit
val print_flush : unit -> unit
val pp_print_newline : formatter -> unit -> unit
val print_newline : unit -> unit
val pp_set_margin : formatter -> int -> unit
val set_margin : int -> unit
val pp_get_margin : formatter -> unit -> int
val get_margin : unit -> int
val pp_set_max_indent : formatter -> int -> unit
val set_max_indent : int -> unit
val pp_get_max_indent : formatter -> unit -> int
val get_max_indent : unit -> int
val pp_set_max_boxes : formatter -> int -> unit
val set_max_boxes : int -> unit
val pp_get_max_boxes : formatter -> unit -> int
val get_max_boxes : unit -> int
val pp_over_max_boxes : formatter -> unit -> bool
val over_max_boxes : unit -> bool
val pp_open_tbox : formatter -> unit -> unit
val open_tbox : unit -> unit
val pp_close_tbox : formatter -> unit -> unit
val close_tbox : unit -> unit
val pp_set_tab : formatter -> unit -> unit
val set_tab : unit -> unit
val pp_print_tab : formatter -> unit -> unit
val print_tab : unit -> unit
val pp_print_tbreak : formatter -> int -> int -> unit
val print_tbreak : int -> int -> unit
val pp_set_ellipsis_text : formatter -> string -> unit
val set_ellipsis_text : string -> unit
val pp_get_ellipsis_text : formatter -> unit -> string
val get_ellipsis_text : unit -> string
type tag = string
val pp_open_tag : formatter -> string -> unit
val open_tag : tag -> unit
val pp_close_tag : formatter -> unit -> unit
val close_tag : unit -> unit
val pp_set_tags : formatter -> bool -> unit
val set_tags : bool -> unit
val pp_set_print_tags : formatter -> bool -> unit
val set_print_tags : bool -> unit
val pp_set_mark_tags : formatter -> bool -> unit
val set_mark_tags : bool -> unit
val pp_get_print_tags : formatter -> unit -> bool
val get_print_tags : unit -> bool
val pp_get_mark_tags : formatter -> unit -> bool
val get_mark_tags : unit -> bool
val pp_set_formatter_out_channel : formatter -> Pervasives.out_channel -> unit
val set_formatter_out_channel : Pervasives.out_channel -> unit
val pp_set_formatter_output_functions : formatter -> (string -> int -> int -> unit) -> (unit -> unit) -> unit
val set_formatter_output_functions : (string -> int -> int -> unit) -> (unit -> unit) -> unit
val pp_get_formatter_output_functions : formatter -> unit -> (string -> int -> int -> unit) * (unit -> unit)
val get_formatter_output_functions : unit -> (string -> int -> int -> unit) * (unit -> unit)
type formatter_out_functions = Format.formatter_out_functions = {
out_string : string -> int -> int -> unit;
out_flush : unit -> unit;
out_newline : unit -> unit;
out_spaces : int -> unit;
out_indent : int -> unit;
}
val pp_set_formatter_out_functions : formatter -> formatter_out_functions -> unit
val set_formatter_out_functions : formatter_out_functions -> unit
val pp_get_formatter_out_functions : formatter -> unit -> formatter_out_functions
val get_formatter_out_functions : unit -> formatter_out_functions
type formatter_tag_functions = Format.formatter_tag_functions = {
mark_open_tag : tag -> string;
mark_close_tag : tag -> string;
print_open_tag : tag -> unit;
print_close_tag : tag -> unit;
}
val pp_set_formatter_tag_functions : formatter -> formatter_tag_functions -> unit
val set_formatter_tag_functions : formatter_tag_functions -> unit
val pp_get_formatter_tag_functions : formatter -> unit -> formatter_tag_functions
val get_formatter_tag_functions : unit -> formatter_tag_functions
val formatter_of_out_channel : Pervasives.out_channel -> formatter
val std_formatter : formatter
val err_formatter : formatter
val formatter_of_buffer : Buffer.t -> formatter
val stdbuf : Buffer.t
val str_formatter : formatter
val flush_str_formatter : unit -> string
val make_formatter : (string -> int -> int -> unit) -> (unit -> unit) -> formatter
val formatter_of_out_functions : formatter_out_functions -> formatter
type symbolic_output_item = Format.symbolic_output_item =
| Output_flush
| Output_newline
| Output_string of string
| Output_spaces of int
| Output_indent of int
type symbolic_output_buffer = Format.symbolic_output_buffer
val make_symbolic_output_buffer : unit -> symbolic_output_buffer
val clear_symbolic_output_buffer : symbolic_output_buffer -> unit
val get_symbolic_output_buffer : symbolic_output_buffer -> symbolic_output_item list
val flush_symbolic_output_buffer : symbolic_output_buffer -> symbolic_output_item list
val add_symbolic_output_item : symbolic_output_buffer -> symbolic_output_item -> unit
val formatter_of_symbolic_output_buffer : symbolic_output_buffer -> formatter
val pp_print_list : ?⁠pp_sep:(formatter -> unit -> unit) -> (formatter -> 'a -> unit) -> formatter -> 'a list -> unit
val pp_print_text : formatter -> string -> unit
val fprintf : formatter -> ('aformatter, unit) Pervasives.format -> 'a
val printf : ('aformatter, unit) Pervasives.format -> 'a
val eprintf : ('aformatter, unit) Pervasives.format -> 'a
val sprintf : ('a, unit, string) Pervasives.format -> 'a
val asprintf : ('aformatter, unit, string) Pervasives.format4 -> 'a
val ifprintf : formatter -> ('aformatter, unit) Pervasives.format -> 'a
val kfprintf : (formatter -> 'a) -> formatter -> ('bformatter, unit, 'a) Pervasives.format4 -> 'b
val ikfprintf : (formatter -> 'a) -> formatter -> ('bformatter, unit, 'a) Pervasives.format4 -> 'b
val ksprintf : (string -> 'a) -> ('b, unit, string, 'a) Pervasives.format4 -> 'b
val kasprintf : (string -> 'a) -> ('bformatter, unit, 'a) Pervasives.format4 -> 'b
val bprintf : Buffer.t -> ('aformatter, unit) Pervasives.format -> 'a
val kprintf : (string -> 'a) -> ('b, unit, string, 'a) Pervasives.format4 -> 'b
val set_all_formatter_output_functions : out:(string -> int -> int -> unit) -> flush:(unit -> unit) -> newline:(unit -> unit) -> spaces:(int -> unit) -> unit
val get_all_formatter_output_functions : unit -> (string -> int -> int -> unit) * (unit -> unit) * (unit -> unit) * (int -> unit)
val pp_set_all_formatter_output_functions : formatter -> out:(string -> int -> int -> unit) -> flush:(unit -> unit) -> newline:(unit -> unit) -> spaces:(int -> unit) -> unit
val pp_get_all_formatter_output_functions : formatter -> unit -> (string -> int -> int -> unit) * (unit -> unit) * (unit -> unit) * (int -> unit)
type t = Format.formatter
type 'a printer = t -> 'a -> unit

Combinators

val silent : 'a printer

Prints nothing.

val unit : unit printer

Prints "()".

val int : int printer
val string : string printer
val bool : bool printer
val float3 : float printer
val float : float printer
val newline : unit printer

Force newline (see Format.pp_force_newline).

since
1.2
val substring : (string * int * int) printer

Print the substring (s,i,len), where i is the offset in s and len the number of bytes in the substring.

raises Invalid_argument

if the triple (s,i,len) does not describe a proper substring.

since
1.2
val text : string printer

Print string, but replacing spaces with breaks and newlines with newline. See pp_print_text on recent versions of OCaml.

since
1.2
val char : char printer
since
0.14
val int32 : int32 printer
since
0.14
val int64 : int64 printer
since
0.14
val nativeint : nativeint printer
since
0.14
val flush : unit printer

Alias to Format.pp_print_flush.

since
1.2
val string_quoted : string printer

Similar to CCString.print.

since
0.14
val list : ?⁠sep:unit printer -> 'a printer -> 'a list printer
val array : ?⁠sep:unit printer -> 'a printer -> 'a array printer
val arrayi : ?⁠sep:unit printer -> (int * 'a) printer -> 'a array printer
val seq : ?⁠sep:unit printer -> 'a printer -> 'a sequence printer
val opt : 'a printer -> 'a option printer

opt pp prints options as follows:

  • Some x will become "some foo" if pp x ---> "foo".
  • None will become "none".
val pair : ?⁠sep:unit printer -> 'a printer -> 'b printer -> ('a * 'b) printer
val triple : ?⁠sep:unit printer -> 'a printer -> 'b printer -> 'c printer -> ('a * 'b * 'c) printer
val quad : ?⁠sep:unit printer -> 'a printer -> 'b printer -> 'c printer -> 'd printer -> ('a * 'b * 'c * 'd) printer
val within : string -> string -> 'a printer -> 'a printer

within a b p wraps p inside the strings a and b. Convenient, for instances, for brackets, parenthesis, quotes, etc.

since
0.17
val map : ('a -> 'b) -> 'b printer -> 'a printer
val vbox : ?⁠i:int -> 'a printer -> 'a printer

Wrap the printer in a vertical box.

parameter i

level of indentation within the box (default 0).

since
0.16
val hvbox : ?⁠i:int -> 'a printer -> 'a printer

Wrap the printer in a horizontal/vertical box.

parameter i

level of indentation within the box (default 0).

since
0.16
val hovbox : ?⁠i:int -> 'a printer -> 'a printer

Wrap the printer in a horizontal or vertical box.

parameter i

level of indentation within the box (default 0).

since
0.16
val hbox : 'a printer -> 'a printer

Wrap the printer in an horizontal box.

since
0.16
val return : ('a__'a) Pervasives.format4 -> unit printer

return "some_format_string" takes a argument-less format string and returns a printer actionable by (). Examples:

  • return ",@ "
  • return "@{<Red>and then@}@,"
  • return "@[<v>a@ b@]"
since
1.0
val of_to_string : ('a -> string) -> 'a printer

of_to_string f converts its input to a string using f, then prints the string.

since
1.0
val const : 'a printer -> 'a -> unit printer

const pp x is a unit printer that uses pp on x.

since
1.0
val some : 'a printer -> 'a option printer

some pp will print options as follows:

  • Some x is printed using pp on x
  • None is not printed at all
since
1.0
val lazy_force : 'a printer -> 'a lazy_t printer

lazy_force pp out x forces x and prints the result with pp.

since
2.0
val lazy_or : ?⁠default:unit printer -> 'a printer -> 'a lazy_t printer

lazy_or ?default pp out x prints default if x is not evaluated yet, or uses pp otherwise.

since
2.0

ANSI codes

Use ANSI escape codes https://en.wikipedia.org/wiki/ANSI_escape_code to put some colors on the terminal.

This uses tags in format strings to specify the style. Current styles are the following:

  • "reset" resets style
  • "black"
  • "red"
  • "green"
  • "yellow"
  • "blue"
  • "magenta"
  • "cyan"
  • "white"
  • "bold" bold font
  • "Black" bold black
  • "Red" bold red
  • "Green" bold green
  • "Yellow" bold yellow
  • "Blue" bold blue
  • "Magenta" bold magenta
  • "Cyan" bold cyan
  • "White" bold white

Example:

set_color_default true;;
+CCFormat (containers.CCFormat)

Module CCFormat

Helpers for Format

since
0.8
type 'a sequence = ('a -> unit) -> unit
include module type of sig ... end
type formatter = Format.formatter
val pp_open_box : formatter -> int -> unit
val open_box : int -> unit
val pp_close_box : formatter -> unit -> unit
val close_box : unit -> unit
val pp_open_hbox : formatter -> unit -> unit
val open_hbox : unit -> unit
val pp_open_vbox : formatter -> int -> unit
val open_vbox : int -> unit
val pp_open_hvbox : formatter -> int -> unit
val open_hvbox : int -> unit
val pp_open_hovbox : formatter -> int -> unit
val open_hovbox : int -> unit
val pp_print_string : formatter -> string -> unit
val print_string : string -> unit
val pp_print_as : formatter -> int -> string -> unit
val print_as : int -> string -> unit
val pp_print_int : formatter -> int -> unit
val print_int : int -> unit
val pp_print_float : formatter -> float -> unit
val print_float : float -> unit
val pp_print_char : formatter -> char -> unit
val print_char : char -> unit
val pp_print_bool : formatter -> bool -> unit
val print_bool : bool -> unit
val pp_print_space : formatter -> unit -> unit
val print_space : unit -> unit
val pp_print_cut : formatter -> unit -> unit
val print_cut : unit -> unit
val pp_print_break : formatter -> int -> int -> unit
val print_break : int -> int -> unit
val pp_force_newline : formatter -> unit -> unit
val force_newline : unit -> unit
val pp_print_if_newline : formatter -> unit -> unit
val print_if_newline : unit -> unit
val pp_print_flush : formatter -> unit -> unit
val print_flush : unit -> unit
val pp_print_newline : formatter -> unit -> unit
val print_newline : unit -> unit
val pp_set_margin : formatter -> int -> unit
val set_margin : int -> unit
val pp_get_margin : formatter -> unit -> int
val get_margin : unit -> int
val pp_set_max_indent : formatter -> int -> unit
val set_max_indent : int -> unit
val pp_get_max_indent : formatter -> unit -> int
val get_max_indent : unit -> int
val pp_set_max_boxes : formatter -> int -> unit
val set_max_boxes : int -> unit
val pp_get_max_boxes : formatter -> unit -> int
val get_max_boxes : unit -> int
val pp_over_max_boxes : formatter -> unit -> bool
val over_max_boxes : unit -> bool
val pp_open_tbox : formatter -> unit -> unit
val open_tbox : unit -> unit
val pp_close_tbox : formatter -> unit -> unit
val close_tbox : unit -> unit
val pp_set_tab : formatter -> unit -> unit
val set_tab : unit -> unit
val pp_print_tab : formatter -> unit -> unit
val print_tab : unit -> unit
val pp_print_tbreak : formatter -> int -> int -> unit
val print_tbreak : int -> int -> unit
val pp_set_ellipsis_text : formatter -> string -> unit
val set_ellipsis_text : string -> unit
val pp_get_ellipsis_text : formatter -> unit -> string
val get_ellipsis_text : unit -> string
type tag = string
val pp_open_tag : formatter -> string -> unit
val open_tag : tag -> unit
val pp_close_tag : formatter -> unit -> unit
val close_tag : unit -> unit
val pp_set_tags : formatter -> bool -> unit
val set_tags : bool -> unit
val pp_set_print_tags : formatter -> bool -> unit
val set_print_tags : bool -> unit
val pp_set_mark_tags : formatter -> bool -> unit
val set_mark_tags : bool -> unit
val pp_get_print_tags : formatter -> unit -> bool
val get_print_tags : unit -> bool
val pp_get_mark_tags : formatter -> unit -> bool
val get_mark_tags : unit -> bool
val pp_set_formatter_out_channel : formatter -> Pervasives.out_channel -> unit
val set_formatter_out_channel : Pervasives.out_channel -> unit
val pp_set_formatter_output_functions : formatter -> (string -> int -> int -> unit) -> (unit -> unit) -> unit
val set_formatter_output_functions : (string -> int -> int -> unit) -> (unit -> unit) -> unit
val pp_get_formatter_output_functions : formatter -> unit -> (string -> int -> int -> unit) * (unit -> unit)
val get_formatter_output_functions : unit -> (string -> int -> int -> unit) * (unit -> unit)
type formatter_out_functions = Format.formatter_out_functions = {
out_string : string -> int -> int -> unit;
out_flush : unit -> unit;
out_newline : unit -> unit;
out_spaces : int -> unit;
out_indent : int -> unit;
}
val pp_set_formatter_out_functions : formatter -> formatter_out_functions -> unit
val set_formatter_out_functions : formatter_out_functions -> unit
val pp_get_formatter_out_functions : formatter -> unit -> formatter_out_functions
val get_formatter_out_functions : unit -> formatter_out_functions
type formatter_tag_functions = Format.formatter_tag_functions = {
mark_open_tag : tag -> string;
mark_close_tag : tag -> string;
print_open_tag : tag -> unit;
print_close_tag : tag -> unit;
}
val pp_set_formatter_tag_functions : formatter -> formatter_tag_functions -> unit
val set_formatter_tag_functions : formatter_tag_functions -> unit
val pp_get_formatter_tag_functions : formatter -> unit -> formatter_tag_functions
val get_formatter_tag_functions : unit -> formatter_tag_functions
val formatter_of_out_channel : Pervasives.out_channel -> formatter
val std_formatter : formatter
val err_formatter : formatter
val formatter_of_buffer : Buffer.t -> formatter
val stdbuf : Buffer.t
val str_formatter : formatter
val flush_str_formatter : unit -> string
val make_formatter : (string -> int -> int -> unit) -> (unit -> unit) -> formatter
val formatter_of_out_functions : formatter_out_functions -> formatter
type symbolic_output_item = Format.symbolic_output_item =
| Output_flush
| Output_newline
| Output_string of string
| Output_spaces of int
| Output_indent of int
type symbolic_output_buffer = Format.symbolic_output_buffer
val make_symbolic_output_buffer : unit -> symbolic_output_buffer
val clear_symbolic_output_buffer : symbolic_output_buffer -> unit
val get_symbolic_output_buffer : symbolic_output_buffer -> symbolic_output_item list
val flush_symbolic_output_buffer : symbolic_output_buffer -> symbolic_output_item list
val add_symbolic_output_item : symbolic_output_buffer -> symbolic_output_item -> unit
val formatter_of_symbolic_output_buffer : symbolic_output_buffer -> formatter
val pp_print_list : ?⁠pp_sep:(formatter -> unit -> unit) -> (formatter -> 'a -> unit) -> formatter -> 'a list -> unit
val pp_print_text : formatter -> string -> unit
val fprintf : formatter -> ('aformatter, unit) Pervasives.format -> 'a
val printf : ('aformatter, unit) Pervasives.format -> 'a
val eprintf : ('aformatter, unit) Pervasives.format -> 'a
val sprintf : ('a, unit, string) Pervasives.format -> 'a
val asprintf : ('aformatter, unit, string) Pervasives.format4 -> 'a
val ifprintf : formatter -> ('aformatter, unit) Pervasives.format -> 'a
val kfprintf : (formatter -> 'a) -> formatter -> ('bformatter, unit, 'a) Pervasives.format4 -> 'b
val ikfprintf : (formatter -> 'a) -> formatter -> ('bformatter, unit, 'a) Pervasives.format4 -> 'b
val ksprintf : (string -> 'a) -> ('b, unit, string, 'a) Pervasives.format4 -> 'b
val kasprintf : (string -> 'a) -> ('bformatter, unit, 'a) Pervasives.format4 -> 'b
val bprintf : Buffer.t -> ('aformatter, unit) Pervasives.format -> 'a
val kprintf : (string -> 'a) -> ('b, unit, string, 'a) Pervasives.format4 -> 'b
val set_all_formatter_output_functions : out:(string -> int -> int -> unit) -> flush:(unit -> unit) -> newline:(unit -> unit) -> spaces:(int -> unit) -> unit
val get_all_formatter_output_functions : unit -> (string -> int -> int -> unit) * (unit -> unit) * (unit -> unit) * (int -> unit)
val pp_set_all_formatter_output_functions : formatter -> out:(string -> int -> int -> unit) -> flush:(unit -> unit) -> newline:(unit -> unit) -> spaces:(int -> unit) -> unit
val pp_get_all_formatter_output_functions : formatter -> unit -> (string -> int -> int -> unit) * (unit -> unit) * (unit -> unit) * (int -> unit)
type t = Format.formatter
type 'a printer = t -> 'a -> unit

Combinators

val silent : 'a printer

Prints nothing.

val unit : unit printer

Prints "()".

val int : int printer
val string : string printer
val bool : bool printer
val float3 : float printer
val float : float printer
val newline : unit printer

Force newline (see Format.pp_force_newline).

since
1.2
val substring : (string * int * int) printer

Print the substring (s,i,len), where i is the offset in s and len the number of bytes in the substring.

raises Invalid_argument

if the triple (s,i,len) does not describe a proper substring.

since
1.2
val text : string printer

Print string, but replacing spaces with breaks and newlines with newline. See pp_print_text on recent versions of OCaml.

since
1.2
val char : char printer
since
0.14
val int32 : int32 printer
since
0.14
val int64 : int64 printer
since
0.14
val nativeint : nativeint printer
since
0.14
val flush : unit printer

Alias to Format.pp_print_flush.

since
1.2
val string_quoted : string printer

Similar to CCString.print.

since
0.14
val list : ?⁠sep:unit printer -> 'a printer -> 'a list printer
val array : ?⁠sep:unit printer -> 'a printer -> 'a array printer
val arrayi : ?⁠sep:unit printer -> (int * 'a) printer -> 'a array printer
val seq : ?⁠sep:unit printer -> 'a printer -> 'a sequence printer
val opt : 'a printer -> 'a option printer

opt pp prints options as follows:

  • Some x will become "some foo" if pp x ---> "foo".
  • None will become "none".
val pair : ?⁠sep:unit printer -> 'a printer -> 'b printer -> ('a * 'b) printer
val triple : ?⁠sep:unit printer -> 'a printer -> 'b printer -> 'c printer -> ('a * 'b * 'c) printer
val quad : ?⁠sep:unit printer -> 'a printer -> 'b printer -> 'c printer -> 'd printer -> ('a * 'b * 'c * 'd) printer
val within : string -> string -> 'a printer -> 'a printer

within a b p wraps p inside the strings a and b. Convenient, for instances, for brackets, parenthesis, quotes, etc.

since
0.17
val map : ('a -> 'b) -> 'b printer -> 'a printer
val vbox : ?⁠i:int -> 'a printer -> 'a printer

Wrap the printer in a vertical box.

parameter i

level of indentation within the box (default 0).

since
0.16
val hvbox : ?⁠i:int -> 'a printer -> 'a printer

Wrap the printer in a horizontal/vertical box.

parameter i

level of indentation within the box (default 0).

since
0.16
val hovbox : ?⁠i:int -> 'a printer -> 'a printer

Wrap the printer in a horizontal or vertical box.

parameter i

level of indentation within the box (default 0).

since
0.16
val hbox : 'a printer -> 'a printer

Wrap the printer in an horizontal box.

since
0.16
val return : ('a__'a) Pervasives.format4 -> unit printer

return "some_format_string" takes a argument-less format string and returns a printer actionable by (). Examples:

  • return ",@ "
  • return "@{<Red>and then@}@,"
  • return "@[<v>a@ b@]"
since
1.0
val of_to_string : ('a -> string) -> 'a printer

of_to_string f converts its input to a string using f, then prints the string.

since
1.0
val const : 'a printer -> 'a -> unit printer

const pp x is a unit printer that uses pp on x.

since
1.0
val some : 'a printer -> 'a option printer

some pp will print options as follows:

  • Some x is printed using pp on x
  • None is not printed at all
since
1.0
val lazy_force : 'a printer -> 'a lazy_t printer

lazy_force pp out x forces x and prints the result with pp.

since
2.0
val lazy_or : ?⁠default:unit printer -> 'a printer -> 'a lazy_t printer

lazy_or ?default pp out x prints default if x is not evaluated yet, or uses pp otherwise.

since
2.0

ANSI codes

Use ANSI escape codes https://en.wikipedia.org/wiki/ANSI_escape_code to put some colors on the terminal.

This uses tags in format strings to specify the style. Current styles are the following:

  • "reset" resets style
  • "black"
  • "red"
  • "green"
  • "yellow"
  • "blue"
  • "magenta"
  • "cyan"
  • "white"
  • "bold" bold font
  • "Black" bold black
  • "Red" bold red
  • "Green" bold green
  • "Yellow" bold yellow
  • "Blue" bold blue
  • "Magenta" bold magenta
  • "Cyan" bold cyan
  • "White" bold white

Example:

set_color_default true;;
 
 Format.printf
-  "what is your @{<White>favorite color@}? @{<blue>blue@}! No, @{<red>red@}! Ahhhhhhh@.";;

status: unstable

since
0.15
val set_color_tag_handling : t -> unit

Add functions to support color tags to the given formatter.

since
0.15
val set_color_default : bool -> unit

set_color_default b enables color handling on the standard formatters (stdout, stderr) if b = true as well as on sprintf formatters; it disables the color handling if b = false.

val with_color : string -> 'a printer -> 'a printer

with_color "Blue" pp behaves like the printer pp, but with the given style.

status: unstable

since
0.16
val with_colorf : string -> t -> ('at, unit, unit) Pervasives.format4 -> 'a

with_colorf "Blue" out "%s %d" "yolo" 42 will behave like Format.fprintf, but wrapping the content with the given style.

status: unstable

since
0.16
val with_color_sf : string -> ('at, unit, string) Pervasives.format4 -> 'a

with_color_sf "Blue" out "%s %d" "yolo" 42 will behave like sprintf, but wrapping the content with the given style.

Example:

CCFormat.with_color_sf "red" "%a" CCFormat.Dump.(list int) [1;2;3] |> print_endline;;

status: unstable

since
0.21
val with_color_ksf : f:(string -> 'b) -> string -> ('at, unit, 'b) Pervasives.format4 -> 'a

with_color_ksf "Blue" ~f "%s %d" "yolo" 42 will behave like ksprintf, but wrapping the content with the given style.

Example: the following with raise Failure with a colored message

CCFormat.with_color_ksf "red" ~f:failwith "%a" CCFormat.Dump.(list int) [1;2;3];;
since
1.2

IO

val output : t -> 'a printer -> 'a -> unit
val to_string : 'a printer -> 'a -> string
val of_chan : Pervasives.out_channel -> t

Alias to Format.formatter_of_out_channel.

since
1.2
val with_out_chan : Pervasives.out_channel -> (t -> 'a) -> 'a

with_out_chan oc f turns oc into a formatter fmt, and call f fmt. Behaves like f fmt from then on, but whether the call to f fails or returns, fmt is flushed before the call terminates.

since
1.2
val stdout : t
val stderr : t
val tee : t -> t -> t

tee a b makes a new formatter that writes in both a and b.

since
1.0
val sprintf : ('at, unit, string) Pervasives.format4 -> 'a

Print into a string any format string that would usually be compatible with fprintf. Like Format.asprintf.

val sprintf_no_color : ('at, unit, string) Pervasives.format4 -> 'a

Like sprintf but never prints colors.

since
0.16
val sprintf_dyn_color : colors:bool -> ('at, unit, string) Pervasives.format4 -> 'a

Like sprintf but enable/disable colors depending on colors.

Example:

(* with colors *)
+  "what is your @{<White>favorite color@}? @{<blue>blue@}! No, @{<red>red@}! Ahhhhhhh@.";;

status: unstable

since
0.15
val set_color_tag_handling : t -> unit

Add functions to support color tags to the given formatter.

since
0.15
val set_color_default : bool -> unit

set_color_default b enables color handling on the standard formatters (stdout, stderr) if b = true as well as on sprintf formatters; it disables the color handling if b = false.

val with_color : string -> 'a printer -> 'a printer

with_color "Blue" pp behaves like the printer pp, but with the given style.

status: unstable

since
0.16
val with_colorf : string -> t -> ('at, unit, unit) Pervasives.format4 -> 'a

with_colorf "Blue" out "%s %d" "yolo" 42 will behave like Format.fprintf, but wrapping the content with the given style.

status: unstable

since
0.16
val with_color_sf : string -> ('at, unit, string) Pervasives.format4 -> 'a

with_color_sf "Blue" out "%s %d" "yolo" 42 will behave like sprintf, but wrapping the content with the given style.

Example:

CCFormat.with_color_sf "red" "%a" CCFormat.Dump.(list int) [1;2;3] |> print_endline;;

status: unstable

since
0.21
val with_color_ksf : f:(string -> 'b) -> string -> ('at, unit, 'b) Pervasives.format4 -> 'a

with_color_ksf "Blue" ~f "%s %d" "yolo" 42 will behave like ksprintf, but wrapping the content with the given style.

Example: the following with raise Failure with a colored message

CCFormat.with_color_ksf "red" ~f:failwith "%a" CCFormat.Dump.(list int) [1;2;3];;
since
1.2

IO

val output : t -> 'a printer -> 'a -> unit
val to_string : 'a printer -> 'a -> string
val of_chan : Pervasives.out_channel -> t

Alias to Format.formatter_of_out_channel.

since
1.2
val with_out_chan : Pervasives.out_channel -> (t -> 'a) -> 'a

with_out_chan oc f turns oc into a formatter fmt, and call f fmt. Behaves like f fmt from then on, but whether the call to f fails or returns, fmt is flushed before the call terminates.

since
1.2
val stdout : t
val stderr : t
val tee : t -> t -> t

tee a b makes a new formatter that writes in both a and b.

since
1.0
val sprintf : ('at, unit, string) Pervasives.format4 -> 'a

Print into a string any format string that would usually be compatible with fprintf. Like Format.asprintf.

val sprintf_no_color : ('at, unit, string) Pervasives.format4 -> 'a

Like sprintf but never prints colors.

since
0.16
val sprintf_dyn_color : colors:bool -> ('at, unit, string) Pervasives.format4 -> 'a

Like sprintf but enable/disable colors depending on colors.

Example:

(* with colors *)
 CCFormat.sprintf_dyn_color ~colors:true "@{<Red>%a@}"
   CCFormat.Dump.(list int) [1;2;3] |> print_endline;;
 
 (* without colors *)
 CCFormat.sprintf_dyn_color ~colors:false "@{<Red>%a@}"
-  CCFormat.Dump.(list int) [1;2;3] |> print_endline;;
since
0.21
val fprintf : t -> ('at, unit) Pervasives.format -> 'a

Alias to Format.fprintf.

since
0.14
val fprintf_dyn_color : colors:bool -> t -> ('at, unit) Pervasives.format -> 'a

Like fprintf but enable/disable colors depending on colors.

since
0.21
val ksprintf : ?⁠margin:int -> f:(string -> 'b) -> ('a, Format.formatter, unit, 'b) Pervasives.format4 -> 'a

ksprintf fmt ~f formats using fmt, in a way similar to sprintf, and then calls f on the resulting string.

parameter margin

set margin (since 2.1)

since
0.14
val to_file : string -> ('at, unit, unit) Pervasives.format4 -> 'a

Print to the given file.

Dump

Print structures as OCaml values, so that they can be parsed back by OCaml (typically, in the toplevel, for debugging).

Example:

Format.printf "%a@." CCFormat.Dump.(list int) CCList.(1 -- 200);;
+  CCFormat.Dump.(list int) [1;2;3] |> print_endline;;
since
0.21
val fprintf : t -> ('at, unit) Pervasives.format -> 'a

Alias to Format.fprintf.

since
0.14
val fprintf_dyn_color : colors:bool -> t -> ('at, unit) Pervasives.format -> 'a

Like fprintf but enable/disable colors depending on colors.

since
0.21
val ksprintf : ?⁠margin:int -> f:(string -> 'b) -> ('a, Format.formatter, unit, 'b) Pervasives.format4 -> 'a

ksprintf fmt ~f formats using fmt, in a way similar to sprintf, and then calls f on the resulting string.

parameter margin

set margin (since 2.1)

since
0.14
val to_file : string -> ('at, unit, unit) Pervasives.format4 -> 'a

Print to the given file.

Dump

Print structures as OCaml values, so that they can be parsed back by OCaml (typically, in the toplevel, for debugging).

Example:

Format.printf "%a@." CCFormat.Dump.(list int) CCList.(1 -- 200);;
 
 Format.printf "%a@." CCFormat.Dump.(array (list (pair int bool)))
   [| [1, true; 2, false]; []; [42, false] |];;
since
0.21
module Dump : sig ... end
\ No newline at end of file diff --git a/dev/containers/CCFun.odoc b/dev/containers/CCFun.odoc deleted file mode 100644 index 81786fc98eed8a0406fca7389d2a13bc72ae21c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3536 zcmbtXU1%KF6<*1s)GIf}4=pJH)4S2GcGuR<{x~U$6^l_eacW42Y28q0UH59{j`r5G zGut~emNqyc4~4$;VdRhm8feE((&nMKLVhp=QrxCAX+( zv(kzrxKwDhckaD&&iT&y?su*NC$L*xvuAdG^wKYWQ!15e_{`z+C47$UoUj8w;?fr? zyk6_~&&Iyh>3=-?roa2&!$1D+Z~t`YzL~eP7w;XHN{3!6m5$s~DwY3zxKyf^(z|-y zm`&33_L`L@?MHbiZ3ZWHBm+OREXz2YrmcSeslX40ff@~@opk4nN}+kp~ojn{xuZ+cNQD?zOC>{mMWa;+e7Q4F2+%)Mh8M0^~SjdNh@epeZF560zifLK9R#M@+ z*;i6o$FDa2MBNUCqaYMyztz`cNtqLX&B6`!?c~x z*xH3(n7Onr{a^$~+uhu7Hbdqo#+TjLXIpH{TB~rX{m|brysen?k8kne$P=tF;wqBd zV}WvnYM!1?x69|Alwo9sfr?n;fc-FH{r)*WGHISG(PZE0F0n|(VukgVn9IEoBTVVh zMGY){aiL>=4GB8{j~*u&r+{9sHfmX+nrog!{-c1hmB(_I+4^0zVOdn|?M0Va7Nz|& z>$<$e*5imNxiN@ZJPZR{@(3g~Egk$rQ^BMBMbZEMfOM$dy>pK6BN>eulCIBBK@@D( zwfm?BzJ?KPE(S(EKx8;{rzV&qqeC{}*RWE3)2D$H=T5f5SCL~%d?n9+4T zLy(%x4HV=47zwJ3i_~a_>g;Oob2G=Pt|y5xN%^5~h$~POp$V?5&H{Jh13t+f1H-sF z07utof7L)#oeWLSxtWtSJ639}y{z{GA8ru*9>z^5$bfO%79(KeY{aFS_6->cKKqSm z6N`B+LQ2L-?GLO6%_qFCyR5ObL^RJ%>#p@8h8&-DM4O$c0tA(2ZstNAMVmzK+(qP5 zk+9E?`crUH?CsnqqR+$4MWL3%DWc!2C1Rg~l12aALd3Ne)bUNZNRyLHT;X2KBe5r4 zk1R1qhBj9YQ442wAp8l}z#Y6+UNqUaLgB{Vy!5F)P)I1dz-b02BzVVtTR}C(mEDveJH3cj3YF=tym! z%*Sj%Evn7{+@tbV0S&myUxx}flZujhC=sF^n(Um5iZjJ!C_-KMdEM8<79B(iAI(Uw zIxDC$OJBFrWC4i3XZ*dyjfw`;`ff=5>ERb5Q zCJ$uA87cG|A9OtH@!`6IexQOOi$m#e6gw~0!+BiZBv?XpB(({^%%OaiHc3#p;pQ*H z2TGN%>N>Zj50RpcBXn+3uBYin%2v;?2hGl@W>LoFX)T$(Q;vE^p4)t z4r*yQ2sq`7OH4$zzLxaNE)d~(&CS#cMag@GK3P9a0POaoIK(yF;JIU^7?xKi7ksuU zBXncjF}84)onVOnG|*lJ!!?^zlkn+8p+nn2wg@##lMipq9Xg&FOj66*zLD(QGRkX} zZ*Qm9?z~}qp%Nv=(L4C(0Y8bAO@4(Y@4J(x2#=;I>Nk^H#^RcByb_TTz%pIXTZ`G{ z2Z1LI9W?$U!Tl|p#p}hb3aH;OETf?<>Q|qrHCC^lX(q+ZGuK?dZb}qPmLEWLs`}*bhIqt diff --git a/dev/containers.data/CCMultiSet/.jbuilder-keep b/dev/containers/CCFun/.dune-keep similarity index 100% rename from dev/containers.data/CCMultiSet/.jbuilder-keep rename to dev/containers/CCFun/.dune-keep diff --git a/dev/containers/CCFun/Monad/argument-1-X/index.html b/dev/containers/CCFun/Monad/argument-1-X/index.html index 815b1ee1..84808922 100644 --- a/dev/containers/CCFun/Monad/argument-1-X/index.html +++ b/dev/containers/CCFun/Monad/argument-1-X/index.html @@ -1,2 +1,2 @@ -1-X (containers.CCFun.Monad.1-X)

Parameter Monad.1-X

type t
\ No newline at end of file +1-X (containers.CCFun.Monad.1-X)

Parameter Monad.1-X

type t
\ No newline at end of file diff --git a/dev/containers/CCFun/Monad/index.html b/dev/containers/CCFun/Monad/index.html index adfaf985..bb71cd8e 100644 --- a/dev/containers/CCFun/Monad/index.html +++ b/dev/containers/CCFun/Monad/index.html @@ -1,2 +1,2 @@ -Monad (containers.CCFun.Monad)

Module CCFun.Monad

Parameters

  • X : sig ... end

Signature

type 'a t = X.t -> 'a
val return : 'a -> 'a t

Monadic return.

val (>|=) : 'a t -> ('a -> 'b) -> 'b t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

\ No newline at end of file +Monad (containers.CCFun.Monad)

Module CCFun.Monad

Parameters

  • X : sig ... end

Signature

type 'a t = X.t -> 'a
val return : 'a -> 'a t

Monadic return.

val (>|=) : 'a t -> ('a -> 'b) -> 'b t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

\ No newline at end of file diff --git a/dev/containers/CCFun/index.html b/dev/containers/CCFun/index.html index 02cbea9c..e94e06e8 100644 --- a/dev/containers/CCFun/index.html +++ b/dev/containers/CCFun/index.html @@ -1,4 +1,4 @@ -CCFun (containers.CCFun)

Module CCFun

Basic Functions

val (|>) : 'a -> ('a -> 'b) -> 'b

A 'pipe' operator. x |> f is the same as f x.

val compose : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c

Composition. compose f g x is g (f x).

val compose_binop : ('a -> 'b) -> ('b -> 'b -> 'c) -> 'a -> 'a -> 'c

compose_binop f g is fun x y -> g (f x) (f y). Example (partial order): List.sort (compose_binop fst CCInt.compare) [1, true; 2, false; 1, false].

since
0.6
val (%>) : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c

Alias to compose.

val (@@) : ('a -> 'b) -> 'a -> 'b

f @@ x is the same as f x, but right-associative.

since
0.5
val id : 'a -> 'a

Identity function.

val const : 'a -> 'b -> 'a

Produce a function that just returns its first argument. const x y = x for any y.

val flip : ('a -> 'b -> 'c) -> 'b -> 'a -> 'c

Reverse the order of arguments for a binary function.

val curry : (('a * 'b) -> 'c) -> 'a -> 'b -> 'c

Convert a function which accepts a pair of arguments into a function which accepts two arguments. curry f x y is f (x,y).

val uncurry : ('a -> 'b -> 'c) -> ('a * 'b) -> 'c

Convert a function which accepts a two arguments into a function which accepts a pair of arguments. uncurry f (x,y) is f x y.

val tap : ('a -> _) -> 'a -> 'a

tap f x evaluates f x, discards it, then returns x. Useful in a pipeline, for instance:

CCArray.(1 -- 10)
-      |> tap CCArray.shuffle
-      |> tap @@ CCArray.sort Pervasives.compare
val (%) : ('b -> 'c) -> ('a -> 'b) -> 'a -> 'c

Mathematical composition. (%) f g x is f (g x).

val lexicographic : ('a -> 'a -> int) -> ('a -> 'a -> int) -> 'a -> 'a -> int

Lexicographic combination of comparison functions.

val finally : h:(unit -> _) -> f:(unit -> 'a) -> 'a

finally h f calls f () and returns its result. If it raises, the same exception is raised; in any case, h () is called after f () terminates.

val finally1 : h:(unit -> _) -> ('a -> 'b) -> 'a -> 'b

finally1 ~h f x is the same as f x, but after the computation, h () is called whether f x rose an exception or not.

since
0.16
val finally2 : h:(unit -> _) -> ('a -> 'b -> 'c) -> 'a -> 'b -> 'c

finally2 ~h f x y is the same as f x y, but after the computation, h () is called whether f x y rose an exception or not.

since
0.16
val opaque_identity : 'a -> 'a

opaque_identity x is like x, but prevents Flambda from using x's definition for optimizing it. (flambda is an optimization/inlining pass in OCaml >= 4.03).

since
0.18
val iterate : int -> ('a -> 'a) -> 'a -> 'a

iterate n f is f iterated n times. That is to say, iterate 0 f x is x, iterate 1 f x is f x, iterate 2 f x is f (f x), etc.

since
2.1

Monad

Functions with a fixed domain are monads in their codomain.

module Monad : functor (X : sig ... end) -> sig ... end
\ No newline at end of file +CCFun (containers.CCFun)

Module CCFun

Basic Functions

include module type of CCShimsFun_
val id : 'a -> 'a

This is an API imitating the new standard Fun module

val flip : ('a -> 'b -> 'c) -> 'b -> 'a -> 'c
val const : 'a -> _ -> 'a
val negate : ('a -> bool) -> 'a -> bool
val protect : finally:(unit -> unit) -> (unit -> 'a) -> 'a
val (|>) : 'a -> ('a -> 'b) -> 'b

A 'pipe' operator. x |> f is the same as f x.

val compose : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c

Composition. compose f g x is g (f x).

val compose_binop : ('a -> 'b) -> ('b -> 'b -> 'c) -> 'a -> 'a -> 'c

compose_binop f g is fun x y -> g (f x) (f y). Example (partial order): List.sort (compose_binop fst CCInt.compare) [1, true; 2, false; 1, false].

since
0.6
val (%>) : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c

Alias to compose.

val (@@) : ('a -> 'b) -> 'a -> 'b

f @@ x is the same as f x, but right-associative.

since
0.5
val curry : (('a * 'b) -> 'c) -> 'a -> 'b -> 'c

Convert a function which accepts a pair of arguments into a function which accepts two arguments. curry f x y is f (x,y).

val uncurry : ('a -> 'b -> 'c) -> ('a * 'b) -> 'c

Convert a function which accepts a two arguments into a function which accepts a pair of arguments. uncurry f (x,y) is f x y.

val tap : ('a -> _) -> 'a -> 'a

tap f x evaluates f x, discards it, then returns x. Useful in a pipeline, for instance:

CCArray.(1 -- 10)
+|> tap CCArray.shuffle
+|> tap @@ CCArray.sort Pervasives.compare
val (%) : ('b -> 'c) -> ('a -> 'b) -> 'a -> 'c

Mathematical composition. (%) f g x is f (g x).

val lexicographic : ('a -> 'a -> int) -> ('a -> 'a -> int) -> 'a -> 'a -> int

Lexicographic combination of comparison functions.

val finally : h:(unit -> _) -> f:(unit -> 'a) -> 'a

finally h f calls f () and returns its result. If it raises, the same exception is raised; in any case, h () is called after f () terminates. If h () raises an exception, then this exception will be passed on and any exception that may have been raised by f () is lost.

val finally1 : h:(unit -> _) -> ('a -> 'b) -> 'a -> 'b

finally1 ~h f x is the same as f x, but after the computation, h () is called whether f x rose an exception or not. If h () raises an exception, then this exception will be passed on and any exception that may have been raised by f () is lost.

since
0.16
val finally2 : h:(unit -> _) -> ('a -> 'b -> 'c) -> 'a -> 'b -> 'c

finally2 ~h f x y is the same as f x y, but after the computation, h () is called whether f x y rose an exception or not. If h () raises an exception, then this exception will be passed on and any exception that may have been raised by f () is lost.

since
0.16
val opaque_identity : 'a -> 'a

opaque_identity x is like x, but prevents Flambda from using x's definition for optimizing it. (flambda is an optimization/inlining pass in OCaml >= 4.03).

since
0.18
val iterate : int -> ('a -> 'a) -> 'a -> 'a

iterate n f is f iterated n times. That is to say, iterate 0 f x is x, iterate 1 f x is f x, iterate 2 f x is f (f x), etc.

since
2.1

Monad

Functions with a fixed domain are monads in their codomain.

module Monad : functor (X : sig ... end) -> sig ... end
\ No newline at end of file diff --git a/dev/containers.data/CCPersistentArray/.jbuilder-keep b/dev/containers/CCFun_vec/.dune-keep similarity index 100% rename from dev/containers.data/CCPersistentArray/.jbuilder-keep rename to dev/containers/CCFun_vec/.dune-keep diff --git a/dev/containers/CCFun_vec/index.html b/dev/containers/CCFun_vec/index.html new file mode 100644 index 00000000..b8172d8f --- /dev/null +++ b/dev/containers/CCFun_vec/index.html @@ -0,0 +1,2 @@ + +CCFun_vec (containers.CCFun_vec)

Module CCFun_vec

Functional Vectors

type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
type 'a printer = Format.formatter -> 'a -> unit
type 'a ktree = unit -> [ `Nil | `Node of 'a * 'a ktree list ]

Signature

type 'a t
val empty : 'a t
val is_empty : _ t -> bool
val return : 'a -> 'a t
val length : _ t -> int
val push : 'a -> 'a t -> 'a t

Add element at the end.

val get : int -> 'a t -> 'a option
val get_exn : int -> 'a t -> 'a
raises Not_found

if key not present.

val pop_exn : 'a t -> 'a * 'a t

Pop last element.

val pop : 'a t -> ('a * 'a t) option

Pop last element.

since
2.5
val iter : f:('a -> unit) -> 'a t -> unit
val iteri : f:(int -> 'a -> unit) -> 'a t -> unit

Iterate on elements with their index, in increasing order.

val iteri_rev : f:(int -> 'a -> unit) -> 'a t -> unit

Iterate on elements with their index, but starting from the end.

val fold : f:('b -> 'a -> 'b) -> x:'b -> 'a t -> 'b
val foldi : f:('b -> int -> 'a -> 'b) -> x:'b -> 'a t -> 'b
val append : 'a t -> 'a t -> 'a t
val map : ('a -> 'b) -> 'a t -> 'b t
val choose : 'a t -> 'a option
Conversions
val to_list : 'a t -> 'a list
val of_list : 'a list -> 'a t
val add_list : 'a t -> 'a list -> 'a t
val add_seq : 'a t -> 'a sequence -> 'a t
val of_seq : 'a sequence -> 'a t
val to_seq : 'a t -> 'a sequence
val add_gen : 'a t -> 'a gen -> 'a t
val of_gen : 'a gen -> 'a t
val to_gen : 'a t -> 'a gen
IO
val pp : 'a printer -> 'a t printer
\ No newline at end of file diff --git a/dev/containers.data/CCPersistentHashtbl/.jbuilder-keep b/dev/containers/CCGraph/.dune-keep similarity index 100% rename from dev/containers.data/CCPersistentHashtbl/.jbuilder-keep rename to dev/containers/CCGraph/.dune-keep diff --git a/dev/containers/CCGraph/Dot/index.html b/dev/containers/CCGraph/Dot/index.html new file mode 100644 index 00000000..7a752006 --- /dev/null +++ b/dev/containers/CCGraph/Dot/index.html @@ -0,0 +1,2 @@ + +Dot (containers.CCGraph.Dot)

Module CCGraph.Dot

type attribute = [
| `Color of string
| `Shape of string
| `Weight of int
| `Style of string
| `Label of string
| `Other of string * string
]

Dot attribute

type vertex_state

Hidden state associated to a vertex

val pp : tbl:('vvertex_state) table -> eq:('v -> 'v -> bool) -> ?⁠attrs_v:('v -> attribute list) -> ?⁠attrs_e:('e -> attribute list) -> ?⁠name:string -> graph:('v'e) t -> Format.formatter -> 'v -> unit

Print the graph, starting from given vertex, on the formatter.

parameter attrs_v

attributes for vertices.

parameter attrs_e

attributes for edges.

parameter name

name of the graph.

val pp_seq : tbl:('vvertex_state) table -> eq:('v -> 'v -> bool) -> ?⁠attrs_v:('v -> attribute list) -> ?⁠attrs_e:('e -> attribute list) -> ?⁠name:string -> graph:('v'e) t -> Format.formatter -> 'v sequence -> unit
val with_out : string -> (Format.formatter -> 'a) -> 'a

Shortcut to open a file and write to it.

\ No newline at end of file diff --git a/dev/containers/CCGraph/Lazy_tree/index.html b/dev/containers/CCGraph/Lazy_tree/index.html new file mode 100644 index 00000000..05e9448e --- /dev/null +++ b/dev/containers/CCGraph/Lazy_tree/index.html @@ -0,0 +1,2 @@ + +Lazy_tree (containers.CCGraph.Lazy_tree)

Module CCGraph.Lazy_tree

type ('v, 'e) t = {
vertex : 'v;
children : ('e * ('v'e) t) list Lazy.t;
}
val map_v : ('a -> 'b) -> ('a'e) t -> ('b'e) t
val fold_v : ('acc -> 'v -> 'acc) -> 'acc -> ('v_) t -> 'acc
\ No newline at end of file diff --git a/dev/containers/CCGraph/Map/index.html b/dev/containers/CCGraph/Map/index.html new file mode 100644 index 00000000..b0c35f8a --- /dev/null +++ b/dev/containers/CCGraph/Map/index.html @@ -0,0 +1,2 @@ + +Map (containers.CCGraph.Map)

Module CCGraph.Map

Parameters

  • O : Map.OrderedType

Signature

type vertex = O.t
type 'a t
val as_graph : 'a t -> (vertex'a) graph

Graph view of the map.

val empty : 'a t
val add_edge : vertex -> 'a -> vertex -> 'a t -> 'a t
val remove_edge : vertex -> vertex -> 'a t -> 'a t
val add : vertex -> 'a t -> 'a t

Add a vertex, possibly with no outgoing edge.

val remove : vertex -> 'a t -> 'a t

Remove the vertex and all its outgoing edges. Edges that point to the vertex are NOT removed, they must be manually removed with remove_edge.

val union : 'a t -> 'a t -> 'a t
val vertices : _ t -> vertex sequence
val vertices_l : _ t -> vertex list
val of_list : (vertex * 'a * vertex) list -> 'a t
val add_list : (vertex * 'a * vertex) list -> 'a t -> 'a t
val to_list : 'a t -> (vertex * 'a * vertex) list
val of_seq : (vertex * 'a * vertex) sequence -> 'a t
val add_seq : (vertex * 'a * vertex) sequence -> 'a t -> 'a t
val to_seq : 'a t -> (vertex * 'a * vertex) sequence
\ No newline at end of file diff --git a/dev/containers/CCGraph/Seq/index.html b/dev/containers/CCGraph/Seq/index.html new file mode 100644 index 00000000..a38963d1 --- /dev/null +++ b/dev/containers/CCGraph/Seq/index.html @@ -0,0 +1,2 @@ + +Seq (containers.CCGraph.Seq)

Module CCGraph.Seq

type 'a t = 'a sequence
val return : 'a -> 'a sequence
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
val map : ('a -> 'b) -> 'a t -> 'b t
val filter_map : ('a -> 'b option) -> 'a t -> 'b t
val iter : ('a -> unit) -> 'a t -> unit
val fold : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b
val to_list : 'a t -> 'a list
\ No newline at end of file diff --git a/dev/containers/CCGraph/Traverse/Event/index.html b/dev/containers/CCGraph/Traverse/Event/index.html new file mode 100644 index 00000000..406eed92 --- /dev/null +++ b/dev/containers/CCGraph/Traverse/Event/index.html @@ -0,0 +1,2 @@ + +Event (containers.CCGraph.Traverse.Event)

Module Traverse.Event

More detailed interface

type edge_kind = [
| `Forward
| `Back
| `Cross
]
type ('v, 'e) t = [
| `Enter of 'v * int * ('v'e) path
| `Exit of 'v
| `Edge of 'v * 'e * 'v * edge_kind
]

A traversal is a sequence of such events

val get_vertex : ('v'e) t -> ('v * [ `Enter | `Exit ]) option
val get_enter : ('v'e) t -> 'v option
val get_exit : ('v'e) t -> 'v option
val get_edge : ('v'e) t -> ('v * 'e * 'v) option
val get_edge_kind : ('v'e) t -> ('v * 'e * 'v * edge_kind) option
val dfs : tbl:'v set -> eq:('v -> 'v -> bool) -> graph:('v'e) graph -> 'v sequence -> ('v'e) t sequence_once

Full version of DFS.

parameter eq

equality predicate on vertices.

val dfs_tag : eq:('v -> 'v -> bool) -> tags:'v tag_set -> graph:('v'e) graph -> 'v sequence -> ('v'e) t sequence_once

Full version of DFS using integer tags.

parameter eq

equality predicate on vertices.

\ No newline at end of file diff --git a/dev/containers/CCGraph/Traverse/index.html b/dev/containers/CCGraph/Traverse/index.html new file mode 100644 index 00000000..028bed7e --- /dev/null +++ b/dev/containers/CCGraph/Traverse/index.html @@ -0,0 +1,2 @@ + +Traverse (containers.CCGraph.Traverse)

Module CCGraph.Traverse

type ('v, 'e) path = ('v * 'e * 'v) list
val generic : tbl:'v set -> bag:'v bag -> graph:('v'e) t -> 'v sequence -> 'v sequence_once

Traversal of the given graph, starting from a sequence of vertices, using the given bag to choose the next vertex to explore. Each vertex is visited at most once.

val generic_tag : tags:'v tag_set -> bag:'v bag -> graph:('v'e) t -> 'v sequence -> 'v sequence_once

One-shot traversal of the graph using a tag set and the given bag.

val dfs : tbl:'v set -> graph:('v'e) t -> 'v sequence -> 'v sequence_once
val dfs_tag : tags:'v tag_set -> graph:('v'e) t -> 'v sequence -> 'v sequence_once
val bfs : tbl:'v set -> graph:('v'e) t -> 'v sequence -> 'v sequence_once
val bfs_tag : tags:'v tag_set -> graph:('v'e) t -> 'v sequence -> 'v sequence_once
val dijkstra : tbl:'v set -> ?⁠dist:('e -> int) -> graph:('v'e) t -> 'v sequence -> ('v * int * ('v'e) path) sequence_once

Dijkstra algorithm, traverses a graph in increasing distance order. Yields each vertex paired with its distance to the set of initial vertices (the smallest distance needed to reach the node from the initial vertices).

parameter dist

distance from origin of the edge to destination, must be strictly positive. Default is 1 for every edge.

val dijkstra_tag : ?⁠dist:('e -> int) -> tags:'v tag_set -> graph:('v'e) t -> 'v sequence -> ('v * int * ('v'e) path) sequence_once
module Event : sig ... end
\ No newline at end of file diff --git a/dev/containers/CCGraph/index.html b/dev/containers/CCGraph/index.html new file mode 100644 index 00000000..bd32d167 --- /dev/null +++ b/dev/containers/CCGraph/index.html @@ -0,0 +1,7 @@ + +CCGraph (containers.CCGraph)

Module CCGraph

Simple Graph Interface

A collections of algorithms on (mostly read-only) graph structures. The user provides her own graph structure as a ('v, 'e) CCGraph.t, where 'v is the type of vertices and 'e the type of edges (for instance, 'e = ('v * 'v) is perfectly fine in many cases).

Such a ('v, 'e) CCGraph.t structure is a record containing three functions: two relate edges to their origin and destination, and one maps vertices to their outgoing edges. This abstract notion of graph makes it possible to run the algorithms on any user-specific type that happens to have a graph structure.

Many graph algorithms here take a sequence of vertices as input. If the user only has a single vertex (e.g., for a topological sort from a given vertex), she can use Seq.return x to build a sequence of one element.

status: unstable

since
0.12

Iter Helpers

type 'a sequence = ('a -> unit) -> unit

A sequence of items of type 'a, possibly infinite

type 'a sequence_once = 'a sequence

Iter that should be used only once

exception Iter_once

Raised when a sequence meant to be used once is used several times.

module Seq : sig ... end

Interfaces for graphs

This interface is designed for oriented graphs with labels on edges

type ('v, 'e) t = 'v -> ('e * 'v) sequence

Directed graph with vertices of type 'v and edges labeled with e'

type ('v, 'e) graph = ('v'e) t
val make : ('v -> ('e * 'v) sequence) -> ('v'e) t

Make a graph by providing the children function.

type 'v tag_set = {
get_tag : 'v -> bool;
set_tag : 'v -> unit;

Set tag for the given element

}

Tags

Mutable tags from values of type 'v to tags of type bool

type ('k, 'a) table = {
mem : 'k -> bool;
find : 'k -> 'a;
raises Not_found

if element not added before

add : 'k -> 'a -> unit;

Erases previous binding

}

Table

Mutable table with keys 'k and values 'a

type 'a set = ('a, unit) table

Mutable set

val mk_table : eq:('k -> 'k -> bool) -> ?⁠hash:('k -> int) -> int -> ('k'a) table

Default implementation for table: a Hashtbl.t.

val mk_map : cmp:('k -> 'k -> int) -> unit -> ('k'a) table

Use a Map.S underneath.

Bags of vertices

type 'a bag = {
push : 'a -> unit;
is_empty : unit -> bool;
pop : unit -> 'a;

raises some exception is empty

}

Bag of elements of type 'a

val mk_queue : unit -> 'a bag
val mk_stack : unit -> 'a bag
val mk_heap : leq:('a -> 'a -> bool) -> 'a bag

mk_heap ~leq makes a priority queue where leq x y = true means that x is smaller than y and should be prioritary.

Traversals

module Traverse : sig ... end

Cycles

val is_dag : tbl:'v set -> eq:('v -> 'v -> bool) -> graph:('v_) t -> 'v sequence -> bool

is_dag ~graph vs returns true if the subset of graph reachable from vs is acyclic.

since
0.18

Topological Sort

exception Has_cycle
val topo_sort : eq:('v -> 'v -> bool) -> ?⁠rev:bool -> tbl:'v set -> graph:('v'e) t -> 'v sequence -> 'v list

topo_sort ~graph seq returns a list of vertices l where each element of l is reachable from seq. The list is sorted in a way such that if v -> v' in the graph, then v comes before v' in the list (i.e. has a smaller index). Basically v -> v' means that v is smaller than v'. See wikipedia.

parameter eq

equality predicate on vertices (default (=)).

parameter rev

if true, the dependency relation is inverted (v -> v' means v' occurs before v).

raises Has_cycle

if the graph is not a DAG.

val topo_sort_tag : eq:('v -> 'v -> bool) -> ?⁠rev:bool -> tags:'v tag_set -> graph:('v'e) t -> 'v sequence -> 'v list

Same as topo_sort but uses an explicit tag set.

Lazy Spanning Tree

module Lazy_tree : sig ... end
val spanning_tree : tbl:'v set -> graph:('v'e) t -> 'v -> ('v'e) Lazy_tree.t

spanning_tree ~graph v computes a lazy spanning tree that has v as a root. The table tbl is used for the memoization part.

val spanning_tree_tag : tags:'v tag_set -> graph:('v'e) t -> 'v -> ('v'e) Lazy_tree.t

Strongly Connected Components

type 'v scc_state

Hidden state for scc.

val scc : tbl:('v'v scc_state) table -> graph:('v'e) t -> 'v sequence -> 'v list sequence_once

Strongly connected components reachable from the given vertices. Each component is a list of vertices that are all mutually reachable in the graph. The components are explored in a topological order (if C1 and C2 are components, and C1 points to C2, then C2 will be yielded before C1). Uses Tarjan's algorithm.

parameter tbl

table used to map nodes to some hidden state.

raises Iter_once

if the result is iterated on more than once.

Pretty printing in the DOT (graphviz) format

Example (print divisors from 42):

let open CCGraph in
+let open Dot in
+with_out "/tmp/truc.dot"
+  (fun out ->
+     pp ~attrs_v:(fun i -> [`Label (string_of_int i)]) ~graph:divisors_graph out 42
+  )
module Dot : sig ... end

Mutable Graph

type ('v, 'e) mut_graph = {
graph : ('v'e) t;
add_edge : 'v -> 'e -> 'v -> unit;
remove : 'v -> unit;
}
val mk_mut_tbl : eq:('v -> 'v -> bool) -> ?⁠hash:('v -> int) -> int -> ('v'a) mut_graph

Make a new mutable graph from a Hashtbl. Edges are labelled with type 'a.

Immutable Graph

A classic implementation of a graph structure on totally ordered vertices, with unlabelled edges. The graph allows to add and remove edges and vertices, and to iterate on edges and vertices.

module type MAP = sig ... end
module Map : functor (O : Map.OrderedType) -> MAP with type vertex = O.t

Misc

val of_list : eq:('v -> 'v -> bool) -> ('v * 'v) list -> ('v, unit) t

of_list l makes a graph from a list of pairs of vertices. Each pair (a,b) is an edge from a to b.

parameter eq

equality used to compare vertices.

val of_hashtbl : ('v'v list) Hashtbl.t -> ('v, unit) t

of_hashtbl tbl makes a graph from a hashtable that maps vertices to lists of children.

val of_fun : ('v -> 'v list) -> ('v, unit) t

of_fun f makes a graph out of a function that maps a vertex to the list of its children. The function is assumed to be deterministic.

val divisors_graph : (int, unit) t

n points to all its strict divisors.

\ No newline at end of file diff --git a/dev/containers/CCGraph/module-type-MAP/index.html b/dev/containers/CCGraph/module-type-MAP/index.html new file mode 100644 index 00000000..5deaf1a0 --- /dev/null +++ b/dev/containers/CCGraph/module-type-MAP/index.html @@ -0,0 +1,2 @@ + +MAP (containers.CCGraph.MAP)

Module type CCGraph.MAP

type vertex
type 'a t
val as_graph : 'a t -> (vertex'a) graph

Graph view of the map.

val empty : 'a t
val add_edge : vertex -> 'a -> vertex -> 'a t -> 'a t
val remove_edge : vertex -> vertex -> 'a t -> 'a t
val add : vertex -> 'a t -> 'a t

Add a vertex, possibly with no outgoing edge.

val remove : vertex -> 'a t -> 'a t

Remove the vertex and all its outgoing edges. Edges that point to the vertex are NOT removed, they must be manually removed with remove_edge.

val union : 'a t -> 'a t -> 'a t
val vertices : _ t -> vertex sequence
val vertices_l : _ t -> vertex list
val of_list : (vertex * 'a * vertex) list -> 'a t
val add_list : (vertex * 'a * vertex) list -> 'a t -> 'a t
val to_list : 'a t -> (vertex * 'a * vertex) list
val of_seq : (vertex * 'a * vertex) sequence -> 'a t
val add_seq : (vertex * 'a * vertex) sequence -> 'a t -> 'a t
val to_seq : 'a t -> (vertex * 'a * vertex) sequence
\ No newline at end of file diff --git a/dev/containers/CCHash.odoc b/dev/containers/CCHash.odoc deleted file mode 100644 index d9dad901437ff604c534f8fc1420c7d2f2ebe897..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2950 zcmb_eYm5{{5Z=eE!jh0PDnXOeK6Y>K!QJfM6A(z|I8ZS164XQzpl`SDc5<^b>&)!I z5;QS^A0+%3ARG#jjJ#rq!a-tC@qt2u1_S6HqcKDcXfP6ui9d`Itm?5OfiD5y1Mt<2wdNh$r>4zZ@AXW7|5EA|jod5m z%(!sR#@ls0NB;cjPRqN03FI_A5{X}pM3NuF*EA&(Nk_u}hSy?27@p}f!XSqZNZu(8 zm^Sqt*E0-5n-YfY{r$@w+bKD2xoGBt+#jpPvIkbaSN+Uga`Bskm(Pdc+$6uI<$57m-e&~i{s2>51gXwm%mz){^i9XcEW_RBj%vAd z5%LF%U}~z5piD-nRbj;R2qk651M?9WL7GF%)eYmEVFX8lU^E3&ilnc>pTsa&vGeGK z3_7l$^N2G@{A!tzaM!FR8U_tW1zsB{kOZd<5P8uYT^

0wKT^X7Q) zbNj4KwCWL;`4!hDIZicLv3L^ZknOmpJw%wrO3d~>J-K8vEtM_y7`UE?HKaF}sp%5W z=XQd)1?mf;u`E)eWrBJS%$u8M(OGSz1GJ4vY8NJ^I$>&R6M=mEA|oCxF`jN48L0Tg zcKnHHDv1Up5u_RJNpK0mrcdZ8}aaLe(grk?M2l ze380=R*&k{LX9(0eWekIyE+4{4fPwjUQ9`YYdGrd4z&4b;EWsec1wd>EpXnTwlF~L zNi=$i8%<10!@nCn%gi&ZgDx%+kC?<_Hmo)ESr~Mxn&69uwy>hQ*+z6-C+2LhZ0`tz zG?pNgi5CW$Bsj&IX_O4(MKYQZ`zK50M+4&;!??6tBAi6DP1*$74xImhYadqHd1=dp zqSZ!4(Ou#tj&@)0?6_8xJr;Q)`g9|8U0MyalLByk9Pl#-2z4!DIOUYV!KcFhwz5w| z;~bCyE!2H2Vp|$ZFVMc{kVJF_SIR*>3eV%@yLJL6FA|dN*$zU%b6sfT|P7Ywx8VZ8BI+>X(B>SC| zIklmNs`xt9TmmRChoj0uoHkS=mEb2lFwW{(GnH-0n40mNvOEzP1LcfKg#YW-} zSUPXSFpq`FU42sHYGDhO*ao<>O6YG+KL`~#3fQPe;M&B_i?#knfSX!pKu_t@$y0#w zAW`ZQ>N3J$BP>!WW3wqUR}eUMl6R{j1*%CcNVb=pT7_#o9v<5DkpJD!XT(m#@~yn8 z|7(o(7~>+H^x;wX--3*3<3YxfB1j^GoVXNw;La9Z_O3^O*w#I8_2AP055RAt7-Nl` zL=K*S6%m(LBDP#+f4o_OI)g;)UTOH8T)NmgzN4}A()g@0?gHbP(zvLMEhUr%%9E(8 z3e^p$c8PjX8NaNA?Mm1o;5#M!rh@mtNqSB;xa$J*Zx0!<~?bjn=**)K-k9 zEAY-iHZ6hA2@YGG8e%pePShgMdPCHPv>s|4=8ZfNyKuMtY-2Ah+NsnE(}EY| zsdPWSr({ -CCHash (containers.CCHash)

Module CCHash

Hash combinators

Definitions

type hash = int

A hash value is a positive integer.

type 'a t = 'a -> hash

A hash function for values of type 'a.

val const : hash -> _ t

const h hashes any value into h. Use with caution!.

val const0 : _ t

Always return 0. Useful for ignoring elements. Example: Hash.(pair string const0) will map pairs ("a", 1) and ("a", 2) to the same hash, but not the same as ("b", 1).

since
1.5
val int : int t
val bool : bool t
val char : char t
val int32 : int32 t
val int64 : int64 t
val nativeint : nativeint t
val slice : string -> int -> int t

slice s i len state hashes the slice i, ... i+len-1 of s into state.

val string : string t
val list : 'a t -> 'a list t
val array : 'a t -> 'a array t
val opt : 'a t -> 'a option t
val pair : 'a t -> 'b t -> ('a * 'b) t
val triple : 'a t -> 'b t -> 'c t -> ('a * 'b * 'c) t
val quad : 'a t -> 'b t -> 'c t -> 'd t -> ('a * 'b * 'c * 'd) t
val if_ : bool -> 'a t -> 'a t -> 'a t

Decide which hash function to use depending on the boolean.

val poly : 'a t

The regular polymorphic hash function. poly x is Hashtbl.hash x.

val list_comm : 'a t -> 'a list t

Commutative version of list. Lists that are equal up to permutation will have the same hash.

since
1.0
val array_comm : 'a t -> 'a array t

Commutative version of array. Arrays that are equal up to permutation will have the same hash.

since
1.0

Base hash combinators

val combine : 'a t -> hash -> 'a -> hash
val combine2 : hash -> hash -> hash
val combine3 : hash -> hash -> hash -> hash
val combine4 : hash -> hash -> hash -> hash -> hash
val combine5 : hash -> hash -> hash -> hash -> hash -> hash
since
2.1
val combine6 : hash -> hash -> hash -> hash -> hash -> hash -> hash
since
2.1

Iterators

type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
val seq : 'a t -> 'a sequence t
val gen : 'a t -> 'a gen t
val klist : 'a t -> 'a klist t
\ No newline at end of file +CCHash (containers.CCHash)

Module CCHash

Hash combinators

Definitions

type hash = int

A hash value is a positive integer.

type 'a t = 'a -> hash

A hash function for values of type 'a.

val const : hash -> _ t

const h hashes any value into h. Use with caution!.

val const0 : _ t

Always return 0. Useful for ignoring elements. Example: Hash.(pair string const0) will map pairs ("a", 1) and ("a", 2) to the same hash, but not the same as ("b", 1).

since
1.5
val int : int t
val bool : bool t
val char : char t
val int32 : int32 t
val int64 : int64 t
val nativeint : nativeint t
val slice : string -> int -> int t

slice s i len state hashes the slice i, ... i+len-1 of s into state.

val string : string t
val list : 'a t -> 'a list t
val array : 'a t -> 'a array t
val opt : 'a t -> 'a option t
val pair : 'a t -> 'b t -> ('a * 'b) t
val triple : 'a t -> 'b t -> 'c t -> ('a * 'b * 'c) t
val quad : 'a t -> 'b t -> 'c t -> 'd t -> ('a * 'b * 'c * 'd) t
val if_ : bool -> 'a t -> 'a t -> 'a t

Decide which hash function to use depending on the boolean.

val poly : 'a t

The regular polymorphic hash function. poly x is Hashtbl.hash x.

val list_comm : 'a t -> 'a list t

Commutative version of list. Lists that are equal up to permutation will have the same hash.

since
1.0
val array_comm : 'a t -> 'a array t

Commutative version of array. Arrays that are equal up to permutation will have the same hash.

since
1.0

Base hash combinators

val combine : 'a t -> hash -> 'a -> hash
val combine2 : hash -> hash -> hash
val combine3 : hash -> hash -> hash -> hash
val combine4 : hash -> hash -> hash -> hash -> hash
val combine5 : hash -> hash -> hash -> hash -> hash -> hash
since
2.1
val combine6 : hash -> hash -> hash -> hash -> hash -> hash -> hash
since
2.1

Iterators

type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
val seq : 'a t -> 'a sequence t
val gen : 'a t -> 'a gen t
val klist : 'a t -> 'a klist t
\ No newline at end of file diff --git a/dev/containers.data/CCRingBuffer/.jbuilder-keep b/dev/containers/CCHashSet/.dune-keep similarity index 100% rename from dev/containers.data/CCRingBuffer/.jbuilder-keep rename to dev/containers/CCHashSet/.dune-keep diff --git a/dev/containers/CCHashSet/Make/argument-1-E/index.html b/dev/containers/CCHashSet/Make/argument-1-E/index.html new file mode 100644 index 00000000..f56c2710 --- /dev/null +++ b/dev/containers/CCHashSet/Make/argument-1-E/index.html @@ -0,0 +1,2 @@ + +1-E (containers.CCHashSet.Make.1-E)

Parameter Make.1-E

type t
val equal : t -> t -> bool
val hash : t -> int

Positive value

\ No newline at end of file diff --git a/dev/containers/CCHashSet/Make/index.html b/dev/containers/CCHashSet/Make/index.html new file mode 100644 index 00000000..7ecb381e --- /dev/null +++ b/dev/containers/CCHashSet/Make/index.html @@ -0,0 +1,2 @@ + +Make (containers.CCHashSet.Make)

Module CCHashSet.Make

Parameters

Signature

type t
type elt = E.t
val create : int -> t

create n makes a new set with the given capacity n.

val singleton : elt -> t

singleton x is the singleton {x}.

val clear : t -> unit

clear s removes all elements from s.

val copy : t -> t

Fresh copy.

val copy_into : into:t -> t -> unit

copy_into ~into s copies all elements of s into into.

val insert : t -> elt -> unit

insert s x adds x into s.

val remove : t -> elt -> unit

Remove the element, if it were in there.

val cardinal : t -> int

cardinal s returns the number of elements in s.

val mem : t -> elt -> bool

mem s x returns true iff x is in s.

val find_exn : t -> elt -> elt

find_exn s x returns y if x and y are equal, and mem s y.

raises Not_found

if x not in s.

val find : t -> elt -> elt option

Safe version of find_exn.

val inter : t -> t -> t

inter a b returns a ∩ b.

val inter_mut : into:t -> t -> unit

inter_mut ~into a changes into into a ∩ into.

val union : t -> t -> t

union a b returns a ∪ b.

val union_mut : into:t -> t -> unit

union_mut ~into a changes into into a ∪ into.

val diff : t -> t -> t

diff a b returns a - b.

val subset : t -> t -> bool

subset a b returns true if all elements of a are in b.

val equal : t -> t -> bool

equal a b is extensional equality (a and b have the same elements).

val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val iter : (elt -> unit) -> t -> unit

Iterate on values.

val fold : ('a -> elt -> 'a) -> 'a -> t -> 'a

Fold on values.

val elements : t -> elt list

List of elements.

val of_list : elt list -> t
val to_seq : t -> elt sequence
val of_seq : elt sequence -> t
val add_seq : t -> elt sequence -> unit
val pp : ?⁠sep:string -> elt printer -> t printer

pp pp_elt returns a set printer, given a printer for individual elements.

\ No newline at end of file diff --git a/dev/containers/CCHashSet/index.html b/dev/containers/CCHashSet/index.html new file mode 100644 index 00000000..9f08da49 --- /dev/null +++ b/dev/containers/CCHashSet/index.html @@ -0,0 +1,2 @@ + +CCHashSet (containers.CCHashSet)

Module CCHashSet

Mutable Set

status: unstable

since
0.13
type 'a sequence = ('a -> unit) -> unit
type 'a printer = Format.formatter -> 'a -> unit
module type S = sig ... end
module type ELEMENT = sig ... end
module Make : functor (E : ELEMENT) -> S with type elt = E.t
\ No newline at end of file diff --git a/dev/containers/CCHashSet/module-type-ELEMENT/index.html b/dev/containers/CCHashSet/module-type-ELEMENT/index.html new file mode 100644 index 00000000..aeac88ce --- /dev/null +++ b/dev/containers/CCHashSet/module-type-ELEMENT/index.html @@ -0,0 +1,2 @@ + +ELEMENT (containers.CCHashSet.ELEMENT)

Module type CCHashSet.ELEMENT

type t
val equal : t -> t -> bool
val hash : t -> int

Positive value

\ No newline at end of file diff --git a/dev/containers/CCHashSet/module-type-S/index.html b/dev/containers/CCHashSet/module-type-S/index.html new file mode 100644 index 00000000..31b1a35f --- /dev/null +++ b/dev/containers/CCHashSet/module-type-S/index.html @@ -0,0 +1,2 @@ + +S (containers.CCHashSet.S)

Module type CCHashSet.S

type t
type elt
val create : int -> t

create n makes a new set with the given capacity n.

val singleton : elt -> t

singleton x is the singleton {x}.

val clear : t -> unit

clear s removes all elements from s.

val copy : t -> t

Fresh copy.

val copy_into : into:t -> t -> unit

copy_into ~into s copies all elements of s into into.

val insert : t -> elt -> unit

insert s x adds x into s.

val remove : t -> elt -> unit

Remove the element, if it were in there.

val cardinal : t -> int

cardinal s returns the number of elements in s.

val mem : t -> elt -> bool

mem s x returns true iff x is in s.

val find_exn : t -> elt -> elt

find_exn s x returns y if x and y are equal, and mem s y.

raises Not_found

if x not in s.

val find : t -> elt -> elt option

Safe version of find_exn.

val inter : t -> t -> t

inter a b returns a ∩ b.

val inter_mut : into:t -> t -> unit

inter_mut ~into a changes into into a ∩ into.

val union : t -> t -> t

union a b returns a ∪ b.

val union_mut : into:t -> t -> unit

union_mut ~into a changes into into a ∪ into.

val diff : t -> t -> t

diff a b returns a - b.

val subset : t -> t -> bool

subset a b returns true if all elements of a are in b.

val equal : t -> t -> bool

equal a b is extensional equality (a and b have the same elements).

val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val iter : (elt -> unit) -> t -> unit

Iterate on values.

val fold : ('a -> elt -> 'a) -> 'a -> t -> 'a

Fold on values.

val elements : t -> elt list

List of elements.

val of_list : elt list -> t
val to_seq : t -> elt sequence
val of_seq : elt sequence -> t
val add_seq : t -> elt sequence -> unit
val pp : ?⁠sep:string -> elt printer -> t printer

pp pp_elt returns a set printer, given a printer for individual elements.

\ No newline at end of file diff --git a/dev/containers.data/CCSimple_queue/.jbuilder-keep b/dev/containers/CCHashTrie/.dune-keep similarity index 100% rename from dev/containers.data/CCSimple_queue/.jbuilder-keep rename to dev/containers/CCHashTrie/.dune-keep diff --git a/dev/containers/CCHashTrie/Make/argument-1-K/index.html b/dev/containers/CCHashTrie/Make/argument-1-K/index.html new file mode 100644 index 00000000..1aaa2289 --- /dev/null +++ b/dev/containers/CCHashTrie/Make/argument-1-K/index.html @@ -0,0 +1,2 @@ + +1-K (containers.CCHashTrie.Make.1-K)

Parameter Make.1-K

type t
val equal : t -> t -> bool
val hash : t -> int
\ No newline at end of file diff --git a/dev/containers/CCHashTrie/Make/index.html b/dev/containers/CCHashTrie/Make/index.html new file mode 100644 index 00000000..ccc8124b --- /dev/null +++ b/dev/containers/CCHashTrie/Make/index.html @@ -0,0 +1,2 @@ + +Make (containers.CCHashTrie.Make)

Module CCHashTrie.Make

Functors

Parameters

Signature

type key = K.t
type 'a t
val empty : 'a t
val is_empty : _ t -> bool
val singleton : key -> 'a -> 'a t
val add : key -> 'a -> 'a t -> 'a t
val mem : key -> _ t -> bool
val get : key -> 'a t -> 'a option
val get_exn : key -> 'a t -> 'a
raises Not_found

if key not present.

val remove : key -> 'a t -> 'a t

Remove the key, if present.

val update : key -> f:('a option -> 'a option) -> 'a t -> 'a t

update k ~f m calls f (Some v) if get k m = Some v, f None otherwise. Then, if f returns Some v' it binds k to v', if f returns None it removes k.

val add_mut : id:Transient.t -> key -> 'a -> 'a t -> 'a t

add_mut ~id k v m behaves like add k v m, except it will mutate in place whenever possible. Changes done with an id might affect all versions of the structure obtained with the same id (but not other versions).

raises Transient.Frozen

if id is frozen.

val remove_mut : id:Transient.t -> key -> 'a t -> 'a t

Same as remove, but modifies in place whenever possible.

raises Transient.Frozen

if id is frozen.

val update_mut : id:Transient.t -> key -> f:('a option -> 'a option) -> 'a t -> 'a t

Same as update but with mutability.

raises Transient.Frozen

if id is frozen.

val cardinal : _ t -> int
val choose : 'a t -> (key * 'a) option
val choose_exn : 'a t -> key * 'a
raises Not_found

if not pair was found.

val iter : f:(key -> 'a -> unit) -> 'a t -> unit
val fold : f:('b -> key -> 'a -> 'b) -> x:'b -> 'a t -> 'b
Conversions
val to_list : 'a t -> (key * 'a) list
val add_list : 'a t -> (key * 'a) list -> 'a t
val add_list_mut : id:Transient.t -> 'a t -> (key * 'a) list -> 'a t
raises Frozen

if the ID is frozen.

val of_list : (key * 'a) list -> 'a t
val add_seq : 'a t -> (key * 'a) sequence -> 'a t
val add_seq_mut : id:Transient.t -> 'a t -> (key * 'a) sequence -> 'a t
raises Frozen

if the ID is frozen.

val of_seq : (key * 'a) sequence -> 'a t
val to_seq : 'a t -> (key * 'a) sequence
val add_gen : 'a t -> (key * 'a) gen -> 'a t
val add_gen_mut : id:Transient.t -> 'a t -> (key * 'a) gen -> 'a t
raises Frozen

if the ID is frozen.

val of_gen : (key * 'a) gen -> 'a t
val to_gen : 'a t -> (key * 'a) gen
IO
val pp : key printer -> 'a printer -> 'a t printer

Renamed from val print.

since
2.0
val as_tree : 'a t -> [ `L of int * (key * 'a) list | `N ] ktree

For debugging purpose: explore the structure of the tree, with `L (h,l) being a leaf (with shared hash h) and `N an inner node.

\ No newline at end of file diff --git a/dev/containers/CCHashTrie/Transient/index.html b/dev/containers/CCHashTrie/Transient/index.html new file mode 100644 index 00000000..cfa6595c --- /dev/null +++ b/dev/containers/CCHashTrie/Transient/index.html @@ -0,0 +1,2 @@ + +Transient (containers.CCHashTrie.Transient)

Module CCHashTrie.Transient

Transient Identifiers

type t

Identifiers for transient modifications. A transient modification is uniquely identified by a Transient.t. Once Transient.freeze r is called, r cannot be used to modify the structure again.

val create : unit -> t

Create a new, active ID.

val equal : t -> t -> bool

Equality between IDs.

val frozen : t -> bool

frozen i returns true if freeze i was called before. In this case, the ID cannot be used for modifications again.

val active : t -> bool

active i is not (frozen i).

val freeze : t -> unit

freeze i makes i unusable for new modifications. The values created with i will now be immutable.

val with_ : (t -> 'a) -> 'a

with_ f creates a transient ID i, calls f i, freezes the ID i and returns the result of f i.

exception Frozen

Raised when a frozen ID is used.

\ No newline at end of file diff --git a/dev/containers/CCHashTrie/index.html b/dev/containers/CCHashTrie/index.html new file mode 100644 index 00000000..2958aebf --- /dev/null +++ b/dev/containers/CCHashTrie/index.html @@ -0,0 +1,2 @@ + +CCHashTrie (containers.CCHashTrie)

Module CCHashTrie

Hash Tries

Trie indexed by the hash of the keys, where the branching factor is fixed. The goal is to have a quite efficient functional structure with fast update and access if the hash function is good. The trie is not binary, to improve cache locality and decrease depth.

Preliminary benchmarks (see the "tbl" section of benchmarks) tend to show that this type is quite efficient for small data sets.

status: unstable

since
0.13
type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
type 'a printer = Format.formatter -> 'a -> unit
type 'a ktree = unit -> [ `Nil | `Node of 'a * 'a ktree list ]
module Transient : sig ... end
module type S = sig ... end
module type KEY = sig ... end
module Make : functor (K : KEY) -> S with type key = K.t
\ No newline at end of file diff --git a/dev/containers/CCHashTrie/module-type-KEY/index.html b/dev/containers/CCHashTrie/module-type-KEY/index.html new file mode 100644 index 00000000..44bfab8f --- /dev/null +++ b/dev/containers/CCHashTrie/module-type-KEY/index.html @@ -0,0 +1,2 @@ + +KEY (containers.CCHashTrie.KEY)

Module type CCHashTrie.KEY

Type for keys

type t
val equal : t -> t -> bool
val hash : t -> int
\ No newline at end of file diff --git a/dev/containers/CCHashTrie/module-type-S/index.html b/dev/containers/CCHashTrie/module-type-S/index.html new file mode 100644 index 00000000..050ed2b5 --- /dev/null +++ b/dev/containers/CCHashTrie/module-type-S/index.html @@ -0,0 +1,2 @@ + +S (containers.CCHashTrie.S)

Module type CCHashTrie.S

Signature

type key
type 'a t
val empty : 'a t
val is_empty : _ t -> bool
val singleton : key -> 'a -> 'a t
val add : key -> 'a -> 'a t -> 'a t
val mem : key -> _ t -> bool
val get : key -> 'a t -> 'a option
val get_exn : key -> 'a t -> 'a
raises Not_found

if key not present.

val remove : key -> 'a t -> 'a t

Remove the key, if present.

val update : key -> f:('a option -> 'a option) -> 'a t -> 'a t

update k ~f m calls f (Some v) if get k m = Some v, f None otherwise. Then, if f returns Some v' it binds k to v', if f returns None it removes k.

val add_mut : id:Transient.t -> key -> 'a -> 'a t -> 'a t

add_mut ~id k v m behaves like add k v m, except it will mutate in place whenever possible. Changes done with an id might affect all versions of the structure obtained with the same id (but not other versions).

raises Transient.Frozen

if id is frozen.

val remove_mut : id:Transient.t -> key -> 'a t -> 'a t

Same as remove, but modifies in place whenever possible.

raises Transient.Frozen

if id is frozen.

val update_mut : id:Transient.t -> key -> f:('a option -> 'a option) -> 'a t -> 'a t

Same as update but with mutability.

raises Transient.Frozen

if id is frozen.

val cardinal : _ t -> int
val choose : 'a t -> (key * 'a) option
val choose_exn : 'a t -> key * 'a
raises Not_found

if not pair was found.

val iter : f:(key -> 'a -> unit) -> 'a t -> unit
val fold : f:('b -> key -> 'a -> 'b) -> x:'b -> 'a t -> 'b
Conversions
val to_list : 'a t -> (key * 'a) list
val add_list : 'a t -> (key * 'a) list -> 'a t
val add_list_mut : id:Transient.t -> 'a t -> (key * 'a) list -> 'a t
raises Frozen

if the ID is frozen.

val of_list : (key * 'a) list -> 'a t
val add_seq : 'a t -> (key * 'a) sequence -> 'a t
val add_seq_mut : id:Transient.t -> 'a t -> (key * 'a) sequence -> 'a t
raises Frozen

if the ID is frozen.

val of_seq : (key * 'a) sequence -> 'a t
val to_seq : 'a t -> (key * 'a) sequence
val add_gen : 'a t -> (key * 'a) gen -> 'a t
val add_gen_mut : id:Transient.t -> 'a t -> (key * 'a) gen -> 'a t
raises Frozen

if the ID is frozen.

val of_gen : (key * 'a) gen -> 'a t
val to_gen : 'a t -> (key * 'a) gen
IO
val pp : key printer -> 'a printer -> 'a t printer

Renamed from val print.

since
2.0
val as_tree : 'a t -> [ `L of int * (key * 'a) list | `N ] ktree

For debugging purpose: explore the structure of the tree, with `L (h,l) being a leaf (with shared hash h) and `N an inner node.

\ No newline at end of file diff --git a/dev/containers/CCHashtbl.odoc b/dev/containers/CCHashtbl.odoc deleted file mode 100644 index 3e67b9d29e8c50fcfb06533154f253ed7958e821..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9687 zcmeHN4Uk+_m7dpq?@YSIz*-BzpU9g`&tEdr(-UGsh*>&}PKX%Aoh+;+Fudu0oq108 zd(C^VXBgKF?k=lVEvv6p1`!uueuzrJCSqk%DvPtED8K@hAW`v;Qg_S3-7Kt2x%}^U z&V8@DCrsF^MujR;c~kf2+;h+WIrq#sMW--0oL!yGU31;uJKNgY`teD8r{nvh{VNNO z?HiVDy57$Ik&z1wZ_=MA=X3Var`o&M5B~CkgIE0bub%z+57goA54N?X545$N<+QcE z=|@Z2+A?k738N5+APf&~%7;O!^X*sprtMjdt^1DdPnx>t8+Orfi+W5!KKx`?F1sc# zUK55r=hsRl(+zT;y>adO!y9Kt@4oVZ$45th*&l|3BO_ZK+o?Eibln2GVI0SZ@^n{=@74^|XQIYx+L%pC9=Ct}yKWv%;hS^50wD;+=Wmko=3yUpeCM zc=Ew~uz#)R7KRFrYYsJpp9Q(8p`l5qVh(v$#j%HG9CymA8U+)Ov9^ZBCu&x?I8-!C zMy>4UuKD<-H>B2`df^N5&UZb!?_(El$_L>m=5H1o`#kf?nrRozAk63I!!YPH^7(vl zd;a!3hI@iwE>p8DKaY`+*x^$buQ0C+#OqtZ0o*(>;W*_Owvw5I)dV7U3^bwcg5YDg zzv`{JtcO6ntrc|7?z$-Vmsm5JMr&ueSdL$~3&C6`qn^Rh7Z`Bs0k%qIlHh6rOxFth32BK20hu7`DRiwJM zn?9%sa$`ox)TiMyWWm4~ej(VkGd7TXrexVgpy&jm+w;U;*y)qp@l7@P zw@P}|H9gbz2hwn^#<{TG+dwy@JMcbt#_~+P4+qrQv-P55dUmg`Pnc!L-mY6VcDg`I z7_8{e!ZkCw?C@H}T+H^dEZ!aj@jYN0|CvWOGiATZ_W2Jt)zJkNLD(8FTlThD8`RIL(o6oJ^HVvQ}r6#2*U zrm_z76V2mg%OjJhuWHP6sQMfown#{6n+$~cV=0oDQh%CFZ&7xL4T6nmU;`w})+_L7 ztBQedRZMR{H_Bz*DHLk1ORntcGZq#m%t)zbk(7dXdCp78WiCVHH0AP>RZ0R4CI(yP z#KyVDveA?n423YA$hBf+Luyj%=&Kmj_`)ES+iFxv|AtO6gjLWBY4~OZJQtjD*(~@F z4y@W>S+agO4ABo*Re>GsIO=*gE-tVQNNpfv*#&m3EDiMYCT7{Wu7Wz&;fjK5R^Tcg zj1M!*w~Vs&0SKD3Sa52TKU)24#_}i0TX4Lal^ND^a9M>?->ARKvCS}e%K)7RdnGzv zs}^DI130$26?6=NULQtO*^q8H;{bW@VsHo-Jp;P!%wTuzi?Ha0j*coE}>9gs*^=VL=U920Q?)El-w+~V;80l*cccKxEJ##?(R z?y2M=weLj=_)w;3vI2tccUn^>`8GW23ivZ(+Cfkqmt`X7?E=BH0KD4ZIGZpX;EZb;D%U*rvYbiHjbST zR||$_=xYk%{^JYc`z?Y*x3?~CXhBjQzIIjKtz(-`tXxbxJoV2 z1xNafVlnoydM=(swh61~(Xoc;TJOYUFfPG3RwWEcpJ=KMcG)aj! zVWpHJ3NYX%c!ZWi!|~Gu+X;*w2~pV!`!lU39K}XrSuar@3o5s%2x8b75d*!d!?Mz= zhULOZRT0So8_;VWX?9^w?gB2AlK=1I#k75~Rjy3e&WNrpJx-}XR^MoBV%t&u*?O!) zMC@V_76|L%Y^D+m`ORGm5bv%p61ymC$;A5yBmT!Z{%}>WV1*S5`M`tvaZw|JDJdaj zQRX54(9JRjH!fA`U3_F94RBQiW~KsC=%s7Cx50fEv1nf+cQToUmV`4rEO{&9ujv#!*%e4|HhZ=~#YvG%-sl?{@XZ8kh0k!$7s#j+S2bX81j?6r~l!pW{6{Ym# z(MUgYE7dDy9L7O9TGN~=J>lh2f+SYx^df>|w!A`GS>psxGRvg7MpiEka%`k$*r0h8 zJkDcl#VpR>YB{Q~@H~Oaa939vQYZB&wK@~j-H1X$QGZYGVhEO_>>h0ld?gT^%dyb`tp|b4%SW&Ik=Ybk+RdWb$&Eyi6wFspgN#(O7VnZzsSU$3@;Nhu}3C$%fwA;-Yyd#k%L_y8dGVu`Rk_q;>?^nb4l}zSjLH1 z&MDYWanlBnw2fo;Hg~fb!FrSa9JATnsF)M(6UO|7o1^Q}5(9ad% zvl;531hV~g)cper@%My{yMVI&)M)L;ObcDmekPxj+8L`$RvAaf>G5vaoLR6v5Tp5g z6OG)BdEj3vFvp z*|fL&lQ>Q9eo&}om{}%vIJ)7oZX{dZ1CSR1!H5=Cc`FG5IR#zdsK(Qr->kXE-KJ}# zhMFt37qp+QmD*K`?NfPOkw5ne?C-%wHZ)li=jIo*^$akrczf{W_vQrY(;-=ge2_Va zY;sna8*Ox)rc5TW^ws9jNo@{wbVb6xpB2!tDth9H``Ifxu88D*`Jz3cOA*>%**&3- zZ4v*^DgG~w`F~FFUyu0z_(|-BQ#91s&^a33#W!m!qWG5h(*L&!PWaAg;(LUL?Cgnq zU%tI>qWXPdp2gh$Pf7;wi)HZG$!&PkT`K#t#9JhkeCAno4;F z!}zhBZD}i>&~G^i`GE$mj!W<==L^50Dl288$qRq0ZdZpLWBqo7m9IdFfo#dfl$`vX zxA}ZX-nLZ_#k;ct+g{mn3o$B}EllfXW!2_)R-)gbcrnp)wD{j)!9ne=yQ8 zqZdnmKP@&;kUU6|`U7>?I-ZW%N6(sMqJ+J#>2+fLtF5(@-dZEIx2rg#`e|f}$&@Mu zWa`X@d8X70n7cv@vz!%_`jYYjvG3KsS|qe2+J~@Tk`(%rEGsLIm8R%inzDDxHbh_J3LB17HO+VIUh30zl(#Sytknv`AxOAlUMS2DZfU46e80*GFy!)v_;aJ>brvd zUlvO?b^duvvt=dy4&N+po2{Dp-RQXOk!id@-Wu-Q8RV(`GLNp@9&CJBoV7_T>%?Ej b@K&ea=)hpRrKP8C6KC+R+vzWN)W81)MCDeZ diff --git a/dev/containers.data/CCTrie/.jbuilder-keep b/dev/containers/CCHashtbl/.dune-keep similarity index 100% rename from dev/containers.data/CCTrie/.jbuilder-keep rename to dev/containers/CCHashtbl/.dune-keep diff --git a/dev/containers/CCHashtbl/Poly/index.html b/dev/containers/CCHashtbl/Poly/index.html index b18ec5f1..650ba748 100644 --- a/dev/containers/CCHashtbl/Poly/index.html +++ b/dev/containers/CCHashtbl/Poly/index.html @@ -1,2 +1,2 @@ -Poly (containers.CCHashtbl.Poly)

Module CCHashtbl.Poly

val get : ('a'b) Hashtbl.t -> 'a -> 'b option

Safe version of Hashtbl.find.

val get_or : ('a'b) Hashtbl.t -> 'a -> default:'b -> 'b

get_or tbl k ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in tbl).

since
0.16
val keys : ('a'b) Hashtbl.t -> 'a sequence

Iterate on keys (similar order as Hashtbl.iter).

val values : ('a'b) Hashtbl.t -> 'b sequence

Iterate on values in the table.

val keys_list : ('a'b) Hashtbl.t -> 'a list

keys_list t is the list of keys in t. If the key is in the Hashtable multiple times, all occurrences will be returned.

since
0.8
val values_list : ('a'b) Hashtbl.t -> 'b list

values_list t is the list of values in t.

since
0.8
val map_list : ('a -> 'b -> 'c) -> ('a'b) Hashtbl.t -> 'c list

Map on a hashtable's items, collect into a list.

val incr : ?⁠by:int -> ('a, int) Hashtbl.t -> 'a -> unit

incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).

parameter by

if specified, the int value is incremented by by rather than 1.

since
0.16
val decr : ?⁠by:int -> ('a, int) Hashtbl.t -> 'a -> unit

Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.

since
0.16
val to_seq : ('a'b) Hashtbl.t -> ('a * 'b) sequence

Iterate on bindings in the table.

val add_list : ('a'b list) Hashtbl.t -> 'a -> 'b -> unit

add_list tbl x y adds y to the list x is bound to. If x is not bound, it becomes bound to y.

since
0.16
val add_seq : ('a'b) Hashtbl.t -> ('a * 'b) sequence -> unit

Add the corresponding pairs to the table, using Hashtbl.add.

since
0.16
val of_seq : ('a * 'b) sequence -> ('a'b) Hashtbl.t

From the given bindings, added in order.

val add_seq_count : ('a, int) Hashtbl.t -> 'a sequence -> unit

add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.

since
0.16
val of_seq_count : 'a sequence -> ('a, int) Hashtbl.t

Like add_seq_count, but allocates a new table and returns it.

since
0.16
val to_list : ('a'b) Hashtbl.t -> ('a * 'b) list

List of bindings (order unspecified).

val of_list : ('a * 'b) list -> ('a'b) Hashtbl.t

Build a table from the given list of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.

val update : ('a'b) Hashtbl.t -> f:('a -> 'b option -> 'b option) -> k:'a -> unit

update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.

since
0.14
val get_or_add : ('a'b) Hashtbl.t -> f:('a -> 'b) -> k:'a -> 'b

get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.

since
1.0
val pp : 'a printer -> 'b printer -> ('a'b) Hashtbl.t printer

Printer for table. Renamed from print since 2.0.

since
0.13
\ No newline at end of file +Poly (containers.CCHashtbl.Poly)

Module CCHashtbl.Poly

val get : ('a'b) Hashtbl.t -> 'a -> 'b option

Safe version of Hashtbl.find.

val get_or : ('a'b) Hashtbl.t -> 'a -> default:'b -> 'b

get_or tbl k ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in tbl).

since
0.16
val keys : ('a'b) Hashtbl.t -> 'a sequence

Iterate on keys (similar order as Hashtbl.iter).

val values : ('a'b) Hashtbl.t -> 'b sequence

Iterate on values in the table.

val keys_list : ('a'b) Hashtbl.t -> 'a list

keys_list t is the list of keys in t. If the key is in the Hashtable multiple times, all occurrences will be returned.

since
0.8
val values_list : ('a'b) Hashtbl.t -> 'b list

values_list t is the list of values in t.

since
0.8
val map_list : ('a -> 'b -> 'c) -> ('a'b) Hashtbl.t -> 'c list

Map on a hashtable's items, collect into a list.

val incr : ?⁠by:int -> ('a, int) Hashtbl.t -> 'a -> unit

incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).

parameter by

if specified, the int value is incremented by by rather than 1.

since
0.16
val decr : ?⁠by:int -> ('a, int) Hashtbl.t -> 'a -> unit

Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.

since
0.16
val to_seq : ('a'b) Hashtbl.t -> ('a * 'b) sequence

Iterate on bindings in the table.

val add_list : ('a'b list) Hashtbl.t -> 'a -> 'b -> unit

add_list tbl x y adds y to the list x is bound to. If x is not bound, it becomes bound to y.

since
0.16
val add_seq : ('a'b) Hashtbl.t -> ('a * 'b) sequence -> unit

Add the corresponding pairs to the table, using Hashtbl.add.

since
0.16
val of_seq : ('a * 'b) sequence -> ('a'b) Hashtbl.t

From the given bindings, added in order.

val add_seq_count : ('a, int) Hashtbl.t -> 'a sequence -> unit

add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.

since
0.16
val of_seq_count : 'a sequence -> ('a, int) Hashtbl.t

Like add_seq_count, but allocates a new table and returns it.

since
0.16
val to_list : ('a'b) Hashtbl.t -> ('a * 'b) list

List of bindings (order unspecified).

val of_list : ('a * 'b) list -> ('a'b) Hashtbl.t

Build a table from the given list of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.

val update : ('a'b) Hashtbl.t -> f:('a -> 'b option -> 'b option) -> k:'a -> unit

update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.

since
0.14
val get_or_add : ('a'b) Hashtbl.t -> f:('a -> 'b) -> k:'a -> 'b

get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.

since
1.0
val pp : 'a printer -> 'b printer -> ('a'b) Hashtbl.t printer

Printer for table. Renamed from print since 2.0.

since
0.13
\ No newline at end of file diff --git a/dev/containers/CCHashtbl/index.html b/dev/containers/CCHashtbl/index.html index ec2c9576..b4d62557 100644 --- a/dev/containers/CCHashtbl/index.html +++ b/dev/containers/CCHashtbl/index.html @@ -1,2 +1,2 @@ -CCHashtbl (containers.CCHashtbl)

Module CCHashtbl

Extension to the standard Hashtbl

since
0.4
type 'a sequence = ('a -> unit) -> unit
type 'a eq = 'a -> 'a -> bool
type 'a hash = 'a -> int
type 'a printer = Format.formatter -> 'a -> unit

Polymorphic tables

module Poly : sig ... end
include module type of Poly
val get : ('a'b) Hashtbl.t -> 'a -> 'b option

Safe version of Hashtbl.find.

val get_or : ('a'b) Hashtbl.t -> 'a -> default:'b -> 'b

get_or tbl k ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in tbl).

since
0.16
val keys : ('a'b) Hashtbl.t -> 'a sequence

Iterate on keys (similar order as Hashtbl.iter).

val values : ('a'b) Hashtbl.t -> 'b sequence

Iterate on values in the table.

val keys_list : ('a'b) Hashtbl.t -> 'a list

keys_list t is the list of keys in t. If the key is in the Hashtable multiple times, all occurrences will be returned.

since
0.8
val values_list : ('a'b) Hashtbl.t -> 'b list

values_list t is the list of values in t.

since
0.8
val map_list : ('a -> 'b -> 'c) -> ('a'b) Hashtbl.t -> 'c list

Map on a hashtable's items, collect into a list.

val incr : ?⁠by:int -> ('a, int) Hashtbl.t -> 'a -> unit

incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).

parameter by

if specified, the int value is incremented by by rather than 1.

since
0.16
val decr : ?⁠by:int -> ('a, int) Hashtbl.t -> 'a -> unit

Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.

since
0.16
val to_seq : ('a'b) Hashtbl.t -> ('a * 'b) sequence

Iterate on bindings in the table.

val add_list : ('a'b list) Hashtbl.t -> 'a -> 'b -> unit

add_list tbl x y adds y to the list x is bound to. If x is not bound, it becomes bound to y.

since
0.16
val add_seq : ('a'b) Hashtbl.t -> ('a * 'b) sequence -> unit

Add the corresponding pairs to the table, using Hashtbl.add.

since
0.16
val of_seq : ('a * 'b) sequence -> ('a'b) Hashtbl.t

From the given bindings, added in order.

val add_seq_count : ('a, int) Hashtbl.t -> 'a sequence -> unit

add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.

since
0.16
val of_seq_count : 'a sequence -> ('a, int) Hashtbl.t

Like add_seq_count, but allocates a new table and returns it.

since
0.16
val to_list : ('a'b) Hashtbl.t -> ('a * 'b) list

List of bindings (order unspecified).

val of_list : ('a * 'b) list -> ('a'b) Hashtbl.t

Build a table from the given list of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.

val update : ('a'b) Hashtbl.t -> f:('a -> 'b option -> 'b option) -> k:'a -> unit

update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.

since
0.14
val get_or_add : ('a'b) Hashtbl.t -> f:('a -> 'b) -> k:'a -> 'b

get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.

since
1.0
val pp : 'a printer -> 'b printer -> ('a'b) Hashtbl.t printer

Printer for table. Renamed from print since 2.0.

since
0.13

Functor

module type S = sig ... end
module Make : functor (X : Hashtbl.HashedType) -> S with type Make.key = X.t and type 'a Make.t = 'a Hashtbl.Make(X).t
\ No newline at end of file +CCHashtbl (containers.CCHashtbl)

Module CCHashtbl

Extension to the standard Hashtbl

since
0.4
type 'a sequence = ('a -> unit) -> unit
type 'a eq = 'a -> 'a -> bool
type 'a hash = 'a -> int
type 'a printer = Format.formatter -> 'a -> unit

Polymorphic tables

module Poly : sig ... end
include module type of Poly
val get : ('a'b) Hashtbl.t -> 'a -> 'b option

Safe version of Hashtbl.find.

val get_or : ('a'b) Hashtbl.t -> 'a -> default:'b -> 'b

get_or tbl k ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in tbl).

since
0.16
val keys : ('a'b) Hashtbl.t -> 'a sequence

Iterate on keys (similar order as Hashtbl.iter).

val values : ('a'b) Hashtbl.t -> 'b sequence

Iterate on values in the table.

val keys_list : ('a'b) Hashtbl.t -> 'a list

keys_list t is the list of keys in t. If the key is in the Hashtable multiple times, all occurrences will be returned.

since
0.8
val values_list : ('a'b) Hashtbl.t -> 'b list

values_list t is the list of values in t.

since
0.8
val map_list : ('a -> 'b -> 'c) -> ('a'b) Hashtbl.t -> 'c list

Map on a hashtable's items, collect into a list.

val incr : ?⁠by:int -> ('a, int) Hashtbl.t -> 'a -> unit

incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).

parameter by

if specified, the int value is incremented by by rather than 1.

since
0.16
val decr : ?⁠by:int -> ('a, int) Hashtbl.t -> 'a -> unit

Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.

since
0.16
val to_seq : ('a'b) Hashtbl.t -> ('a * 'b) sequence

Iterate on bindings in the table.

val add_list : ('a'b list) Hashtbl.t -> 'a -> 'b -> unit

add_list tbl x y adds y to the list x is bound to. If x is not bound, it becomes bound to y.

since
0.16
val add_seq : ('a'b) Hashtbl.t -> ('a * 'b) sequence -> unit

Add the corresponding pairs to the table, using Hashtbl.add.

since
0.16
val of_seq : ('a * 'b) sequence -> ('a'b) Hashtbl.t

From the given bindings, added in order.

val add_seq_count : ('a, int) Hashtbl.t -> 'a sequence -> unit

add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.

since
0.16
val of_seq_count : 'a sequence -> ('a, int) Hashtbl.t

Like add_seq_count, but allocates a new table and returns it.

since
0.16
val to_list : ('a'b) Hashtbl.t -> ('a * 'b) list

List of bindings (order unspecified).

val of_list : ('a * 'b) list -> ('a'b) Hashtbl.t

Build a table from the given list of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.

val update : ('a'b) Hashtbl.t -> f:('a -> 'b option -> 'b option) -> k:'a -> unit

update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.

since
0.14
val get_or_add : ('a'b) Hashtbl.t -> f:('a -> 'b) -> k:'a -> 'b

get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.

since
1.0
val pp : 'a printer -> 'b printer -> ('a'b) Hashtbl.t printer

Printer for table. Renamed from print since 2.0.

since
0.13

Functor

module type S = sig ... end
module Make : functor (X : Hashtbl.HashedType) -> S with type Make.key = X.t and type 'a Make.t = 'a Hashtbl.Make(X).t
\ No newline at end of file diff --git a/dev/containers/CCHashtbl/module-type-S/index.html b/dev/containers/CCHashtbl/module-type-S/index.html index f078d6dd..9d513099 100644 --- a/dev/containers/CCHashtbl/module-type-S/index.html +++ b/dev/containers/CCHashtbl/module-type-S/index.html @@ -1,2 +1,2 @@ -S (containers.CCHashtbl.S)

Module type CCHashtbl.S

include Hashtbl.S
type key
type 'a t
val create : int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> Hashtbl.statistics
val get : 'a t -> key -> 'a option

Safe version of Hashtbl.find.

val get_or : 'a t -> key -> default:'a -> 'a

get_or tbl k ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in tbl).

since
0.16
val add_list : 'a list t -> key -> 'a -> unit

add_list tbl x y adds y to the list x is bound to. If x is not bound, it becomes bound to y.

since
0.16
val incr : ?⁠by:int -> int t -> key -> unit

incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).

parameter by

if specified, the int value is incremented by by rather than 1.

since
0.16
val decr : ?⁠by:int -> int t -> key -> unit

Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.

since
0.16
val keys : 'a t -> key sequence

Iterate on keys (similar order as Hashtbl.iter).

val values : 'a t -> 'a sequence

Iterate on values in the table.

val keys_list : _ t -> key list

keys_list t is the list of keys in t. If the key is in the Hashtable multiple times, all occurrences will be returned.

since
0.8
val values_list : 'a t -> 'a list

values_list t is the list of values in t.

since
0.8
val map_list : (key -> 'a -> 'b) -> 'a t -> 'b list

Map on a hashtable's items, collect into a list.

val to_seq : 'a t -> (key * 'a) sequence

Iterate on values in the table.

val of_seq : (key * 'a) sequence -> 'a t

From the given bindings, added in order.

val add_seq : 'a t -> (key * 'a) sequence -> unit

Add the corresponding pairs to the table, using Hashtbl.add.

since
0.16
val add_seq_count : int t -> key sequence -> unit

add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.

since
0.16
val of_seq_count : key sequence -> int t

Like add_seq_count, but allocates a new table and returns it.

since
0.16
val to_list : 'a t -> (key * 'a) list

List of bindings (order unspecified).

val of_list : (key * 'a) list -> 'a t

Build a table from the given list of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.

val update : 'a t -> f:(key -> 'a option -> 'a option) -> k:key -> unit

update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.

since
0.14
val get_or_add : 'a t -> f:(key -> 'a) -> k:key -> 'a

get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.

since
1.0
val pp : key printer -> 'a printer -> 'a t printer

Printer for tables. Renamed from print since 2.0.

since
0.13
\ No newline at end of file +S (containers.CCHashtbl.S)

Module type CCHashtbl.S

include Hashtbl.S
type key
type 'a t
val create : int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> Hashtbl.statistics
val get : 'a t -> key -> 'a option

Safe version of Hashtbl.find.

val get_or : 'a t -> key -> default:'a -> 'a

get_or tbl k ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in tbl).

since
0.16
val add_list : 'a list t -> key -> 'a -> unit

add_list tbl x y adds y to the list x is bound to. If x is not bound, it becomes bound to y.

since
0.16
val incr : ?⁠by:int -> int t -> key -> unit

incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).

parameter by

if specified, the int value is incremented by by rather than 1.

since
0.16
val decr : ?⁠by:int -> int t -> key -> unit

Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.

since
0.16
val keys : 'a t -> key sequence

Iterate on keys (similar order as Hashtbl.iter).

val values : 'a t -> 'a sequence

Iterate on values in the table.

val keys_list : _ t -> key list

keys_list t is the list of keys in t. If the key is in the Hashtable multiple times, all occurrences will be returned.

since
0.8
val values_list : 'a t -> 'a list

values_list t is the list of values in t.

since
0.8
val map_list : (key -> 'a -> 'b) -> 'a t -> 'b list

Map on a hashtable's items, collect into a list.

val to_seq : 'a t -> (key * 'a) sequence

Iterate on values in the table.

val of_seq : (key * 'a) sequence -> 'a t

From the given bindings, added in order.

val add_seq : 'a t -> (key * 'a) sequence -> unit

Add the corresponding pairs to the table, using Hashtbl.add.

since
0.16
val add_seq_count : int t -> key sequence -> unit

add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.

since
0.16
val of_seq_count : key sequence -> int t

Like add_seq_count, but allocates a new table and returns it.

since
0.16
val to_list : 'a t -> (key * 'a) list

List of bindings (order unspecified).

val of_list : (key * 'a) list -> 'a t

Build a table from the given list of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.

val update : 'a t -> f:(key -> 'a option -> 'a option) -> k:key -> unit

update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.

since
0.14
val get_or_add : 'a t -> f:(key -> 'a) -> k:key -> 'a

get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.

since
1.0
val pp : key printer -> 'a printer -> 'a t printer

Printer for tables. Renamed from print since 2.0.

since
0.13
\ No newline at end of file diff --git a/dev/containers/CCHeap.odoc b/dev/containers/CCHeap.odoc deleted file mode 100644 index bc90042105d0282027e0115a26a3f5584882d912..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6505 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 uSH2G$XzZnT<1 -1-E (containers.CCHeap.Make.1-E)

Parameter Make.1-E

type t
val leq : t -> t -> bool

leq x y shall return true iff x is lower or equal to y.

\ No newline at end of file +1-E (containers.CCHeap.Make.1-E)

Parameter Make.1-E

type t
val leq : t -> t -> bool

leq x y shall return true iff x is lower or equal to y.

\ No newline at end of file diff --git a/dev/containers/CCHeap/Make/index.html b/dev/containers/CCHeap/Make/index.html index 31a8e2ec..84e97b84 100644 --- a/dev/containers/CCHeap/Make/index.html +++ b/dev/containers/CCHeap/Make/index.html @@ -1,2 +1,2 @@ -Make (containers.CCHeap.Make)

Module CCHeap.Make

Parameters

Signature

type elt = E.t
type t
val empty : t

Empty heap.

val is_empty : t -> bool

Is the heap empty?

exception Empty
val merge : t -> t -> t

Merge two heaps.

val insert : elt -> t -> t

Insert a value in the heap.

val add : t -> elt -> t

Synonym to insert.

val filter : (elt -> bool) -> t -> t

Filter values, only retaining the ones that satisfy the predicate. Linear time at least.

val find_min : t -> elt option

Find minimal element.

val find_min_exn : t -> elt

Like find_min but can fail.

raises Empty

if the heap is empty.

val take : t -> (t * elt) option

Extract and return the minimum element, and the new heap (without this element), or None if the heap is empty.

val take_exn : t -> t * elt

Like take, but can fail.

raises Empty

if the heap is empty.

val delete_one : (elt -> elt -> bool) -> elt -> t -> t

Delete one occurrence of a value if it exist in the heap. delete_one eq x h, use eq to find one x in h and delete it. If h do not contain x then it return h.

since
2.0
val delete_all : (elt -> elt -> bool) -> elt -> t -> t

Delete all occurrences of a value in the heap. delete_all eq x h, use eq to find all x in h and delete them. If h do not contain x then it return h. The difference with filter is that delete_all stops as soon as it enters a subtree whose root is bigger than the element.

since
2.0
val iter : (elt -> unit) -> t -> unit

Iterate on elements.

val fold : ('a -> elt -> 'a) -> 'a -> t -> 'a

Fold on all values.

val size : t -> int

Number of elements (linear complexity).

Conversions

The interface of of_gen, of_seq, of_klist has changed since 0.16 (the old signatures are now add_seq, add_gen, add_klist).

val to_list : t -> elt list

Return the elements of the heap, in no particular order.

val to_list_sorted : t -> elt list

Return the elements in increasing order.

since
1.1
val add_list : t -> elt list -> t

Add the elements of the list to the heap. An element occurring several times will be added that many times to the heap.

since
0.16
val of_list : elt list -> t

of_list l is add_list empty l. Complexity: O(n log n).

val add_seq : t -> elt sequence -> t
since
0.16
val of_seq : elt sequence -> t

Build a heap from a given sequence. Complexity: O(n log n).

val to_seq : t -> elt sequence

Return a sequence of the elements of the heap.

val to_seq_sorted : t -> elt sequence

Iterate on the elements, in increasing order.

since
1.1
val add_klist : t -> elt klist -> t
since
0.16
val of_klist : elt klist -> t

Build a heap from a given klist. Complexity: O(n log n).

val to_klist : t -> elt klist

Return a klist of the elements of the heap.

val add_gen : t -> elt gen -> t
since
0.16
val of_gen : elt gen -> t

Build a heap from a given gen. Complexity: O(n log n).

val to_gen : t -> elt gen

Return a gen of the elements of the heap.

val to_tree : t -> elt ktree

Return a ktree of the elements of the heap.

val pp : ?⁠sep:string -> elt printer -> t printer

Printer. Renamed from print since 2.0

since
0.16
\ No newline at end of file +Make (containers.CCHeap.Make)

Module CCHeap.Make

Parameters

Signature

type elt = E.t
type t
val empty : t

Empty heap.

val is_empty : t -> bool

Is the heap empty?

exception Empty
val merge : t -> t -> t

Merge two heaps.

val insert : elt -> t -> t

Insert a value in the heap.

val add : t -> elt -> t

Synonym to insert.

val filter : (elt -> bool) -> t -> t

Filter values, only retaining the ones that satisfy the predicate. Linear time at least.

val find_min : t -> elt option

Find minimal element.

val find_min_exn : t -> elt

Like find_min but can fail.

raises Empty

if the heap is empty.

val take : t -> (t * elt) option

Extract and return the minimum element, and the new heap (without this element), or None if the heap is empty.

val take_exn : t -> t * elt

Like take, but can fail.

raises Empty

if the heap is empty.

val delete_one : (elt -> elt -> bool) -> elt -> t -> t

Delete one occurrence of a value if it exist in the heap. delete_one eq x h, use eq to find one x in h and delete it. If h do not contain x then it return h.

since
2.0
val delete_all : (elt -> elt -> bool) -> elt -> t -> t

Delete all occurrences of a value in the heap. delete_all eq x h, use eq to find all x in h and delete them. If h do not contain x then it return h. The difference with filter is that delete_all stops as soon as it enters a subtree whose root is bigger than the element.

since
2.0
val iter : (elt -> unit) -> t -> unit

Iterate on elements.

val fold : ('a -> elt -> 'a) -> 'a -> t -> 'a

Fold on all values.

val size : t -> int

Number of elements (linear complexity).

Conversions

The interface of of_gen, of_seq, of_klist has changed since 0.16 (the old signatures are now add_seq, add_gen, add_klist).

val to_list : t -> elt list

Return the elements of the heap, in no particular order.

val to_list_sorted : t -> elt list

Return the elements in increasing order.

since
1.1
val add_list : t -> elt list -> t

Add the elements of the list to the heap. An element occurring several times will be added that many times to the heap.

since
0.16
val of_list : elt list -> t

of_list l is add_list empty l. Complexity: O(n log n).

val add_seq : t -> elt sequence -> t
since
0.16
val of_seq : elt sequence -> t

Build a heap from a given sequence. Complexity: O(n log n).

val to_seq : t -> elt sequence

Return a sequence of the elements of the heap.

val to_seq_sorted : t -> elt sequence

Iterate on the elements, in increasing order.

since
1.1
val add_klist : t -> elt klist -> t
since
0.16
val of_klist : elt klist -> t

Build a heap from a given klist. Complexity: O(n log n).

val to_klist : t -> elt klist

Return a klist of the elements of the heap.

val add_gen : t -> elt gen -> t
since
0.16
val of_gen : elt gen -> t

Build a heap from a given gen. Complexity: O(n log n).

val to_gen : t -> elt gen

Return a gen of the elements of the heap.

val to_tree : t -> elt ktree

Return a ktree of the elements of the heap.

val to_string : ?⁠sep:string -> (elt -> string) -> t -> string

Print the heap in a string

since
NEXT_RELEASE
val pp : ?⁠sep:string -> elt printer -> t printer

Printer. Renamed from print since 2.0

since
0.16
\ No newline at end of file diff --git a/dev/containers/CCHeap/Make_from_compare/argument-1-E/index.html b/dev/containers/CCHeap/Make_from_compare/argument-1-E/index.html new file mode 100644 index 00000000..04808be2 --- /dev/null +++ b/dev/containers/CCHeap/Make_from_compare/argument-1-E/index.html @@ -0,0 +1,2 @@ + +1-E (containers.CCHeap.Make_from_compare.1-E)

Parameter Make_from_compare.1-E

type t
val compare : t -> t -> int

compare a b shall return a negative value if a is smaller than b, 0 if a and b are equal or a positive value if a is greater than b

\ No newline at end of file diff --git a/dev/containers/CCHeap/Make_from_compare/index.html b/dev/containers/CCHeap/Make_from_compare/index.html new file mode 100644 index 00000000..b9b1f28e --- /dev/null +++ b/dev/containers/CCHeap/Make_from_compare/index.html @@ -0,0 +1,2 @@ + +Make_from_compare (containers.CCHeap.Make_from_compare)

Module CCHeap.Make_from_compare

A convenient version of Make that take a TOTAL_ORD instead of a partially ordered module. It allow to directly pass modules that implement compare without implementing leq explicitly

Parameters

Signature

type elt = E.t
type t
val empty : t

Empty heap.

val is_empty : t -> bool

Is the heap empty?

exception Empty
val merge : t -> t -> t

Merge two heaps.

val insert : elt -> t -> t

Insert a value in the heap.

val add : t -> elt -> t

Synonym to insert.

val filter : (elt -> bool) -> t -> t

Filter values, only retaining the ones that satisfy the predicate. Linear time at least.

val find_min : t -> elt option

Find minimal element.

val find_min_exn : t -> elt

Like find_min but can fail.

raises Empty

if the heap is empty.

val take : t -> (t * elt) option

Extract and return the minimum element, and the new heap (without this element), or None if the heap is empty.

val take_exn : t -> t * elt

Like take, but can fail.

raises Empty

if the heap is empty.

val delete_one : (elt -> elt -> bool) -> elt -> t -> t

Delete one occurrence of a value if it exist in the heap. delete_one eq x h, use eq to find one x in h and delete it. If h do not contain x then it return h.

since
2.0
val delete_all : (elt -> elt -> bool) -> elt -> t -> t

Delete all occurrences of a value in the heap. delete_all eq x h, use eq to find all x in h and delete them. If h do not contain x then it return h. The difference with filter is that delete_all stops as soon as it enters a subtree whose root is bigger than the element.

since
2.0
val iter : (elt -> unit) -> t -> unit

Iterate on elements.

val fold : ('a -> elt -> 'a) -> 'a -> t -> 'a

Fold on all values.

val size : t -> int

Number of elements (linear complexity).

Conversions

The interface of of_gen, of_seq, of_klist has changed since 0.16 (the old signatures are now add_seq, add_gen, add_klist).

val to_list : t -> elt list

Return the elements of the heap, in no particular order.

val to_list_sorted : t -> elt list

Return the elements in increasing order.

since
1.1
val add_list : t -> elt list -> t

Add the elements of the list to the heap. An element occurring several times will be added that many times to the heap.

since
0.16
val of_list : elt list -> t

of_list l is add_list empty l. Complexity: O(n log n).

val add_seq : t -> elt sequence -> t
since
0.16
val of_seq : elt sequence -> t

Build a heap from a given sequence. Complexity: O(n log n).

val to_seq : t -> elt sequence

Return a sequence of the elements of the heap.

val to_seq_sorted : t -> elt sequence

Iterate on the elements, in increasing order.

since
1.1
val add_klist : t -> elt klist -> t
since
0.16
val of_klist : elt klist -> t

Build a heap from a given klist. Complexity: O(n log n).

val to_klist : t -> elt klist

Return a klist of the elements of the heap.

val add_gen : t -> elt gen -> t
since
0.16
val of_gen : elt gen -> t

Build a heap from a given gen. Complexity: O(n log n).

val to_gen : t -> elt gen

Return a gen of the elements of the heap.

val to_tree : t -> elt ktree

Return a ktree of the elements of the heap.

val to_string : ?⁠sep:string -> (elt -> string) -> t -> string

Print the heap in a string

since
NEXT_RELEASE
val pp : ?⁠sep:string -> elt printer -> t printer

Printer. Renamed from print since 2.0

since
0.16
\ No newline at end of file diff --git a/dev/containers/CCHeap/index.html b/dev/containers/CCHeap/index.html index 5df93cb0..8315dab1 100644 --- a/dev/containers/CCHeap/index.html +++ b/dev/containers/CCHeap/index.html @@ -1,2 +1,2 @@ -CCHeap (containers.CCHeap)

Module CCHeap

Leftist Heaps

Implementation following Okasaki's book.

type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a ktree = unit -> [ `Nil | `Node of 'a * 'a ktree list ]
type 'a printer = Format.formatter -> 'a -> unit
module type PARTIAL_ORD = sig ... end
module type TOTAL_ORD = sig ... end
module type S = sig ... end
module Make : functor (E : PARTIAL_ORD) -> S with type elt = E.t
module Make_from_compare : functor (E : TOTAL_ORD) -> S with type elt = E.t

A convenient version of Make that take a TOTAL_ORD instead of a partially ordered module. It allow to directly pass modules that implement compare without implementing leq explicitly

\ No newline at end of file +CCHeap (containers.CCHeap)

Module CCHeap

Leftist Heaps

Implementation following Okasaki's book.

type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a ktree = unit -> [ `Nil | `Node of 'a * 'a ktree list ]
type 'a printer = Format.formatter -> 'a -> unit
module type PARTIAL_ORD = sig ... end
module type TOTAL_ORD = sig ... end
module type S = sig ... end
module Make : functor (E : PARTIAL_ORD) -> S with type elt = E.t
module Make_from_compare : functor (E : TOTAL_ORD) -> S with type elt = E.t

A convenient version of Make that take a TOTAL_ORD instead of a partially ordered module. It allow to directly pass modules that implement compare without implementing leq explicitly

\ No newline at end of file diff --git a/dev/containers/CCHeap/module-type-PARTIAL_ORD/index.html b/dev/containers/CCHeap/module-type-PARTIAL_ORD/index.html index 681f2275..683a131a 100644 --- a/dev/containers/CCHeap/module-type-PARTIAL_ORD/index.html +++ b/dev/containers/CCHeap/module-type-PARTIAL_ORD/index.html @@ -1,2 +1,2 @@ -PARTIAL_ORD (containers.CCHeap.PARTIAL_ORD)

Module type CCHeap.PARTIAL_ORD

type t
val leq : t -> t -> bool

leq x y shall return true iff x is lower or equal to y.

\ No newline at end of file +PARTIAL_ORD (containers.CCHeap.PARTIAL_ORD)

Module type CCHeap.PARTIAL_ORD

type t
val leq : t -> t -> bool

leq x y shall return true iff x is lower or equal to y.

\ No newline at end of file diff --git a/dev/containers/CCHeap/module-type-S/index.html b/dev/containers/CCHeap/module-type-S/index.html index 274c0867..762886cd 100644 --- a/dev/containers/CCHeap/module-type-S/index.html +++ b/dev/containers/CCHeap/module-type-S/index.html @@ -1,2 +1,2 @@ -S (containers.CCHeap.S)

Module type CCHeap.S

type elt
type t
val empty : t

Empty heap.

val is_empty : t -> bool

Is the heap empty?

exception Empty
val merge : t -> t -> t

Merge two heaps.

val insert : elt -> t -> t

Insert a value in the heap.

val add : t -> elt -> t

Synonym to insert.

val filter : (elt -> bool) -> t -> t

Filter values, only retaining the ones that satisfy the predicate. Linear time at least.

val find_min : t -> elt option

Find minimal element.

val find_min_exn : t -> elt

Like find_min but can fail.

raises Empty

if the heap is empty.

val take : t -> (t * elt) option

Extract and return the minimum element, and the new heap (without this element), or None if the heap is empty.

val take_exn : t -> t * elt

Like take, but can fail.

raises Empty

if the heap is empty.

val delete_one : (elt -> elt -> bool) -> elt -> t -> t

Delete one occurrence of a value if it exist in the heap. delete_one eq x h, use eq to find one x in h and delete it. If h do not contain x then it return h.

since
2.0
val delete_all : (elt -> elt -> bool) -> elt -> t -> t

Delete all occurrences of a value in the heap. delete_all eq x h, use eq to find all x in h and delete them. If h do not contain x then it return h. The difference with filter is that delete_all stops as soon as it enters a subtree whose root is bigger than the element.

since
2.0
val iter : (elt -> unit) -> t -> unit

Iterate on elements.

val fold : ('a -> elt -> 'a) -> 'a -> t -> 'a

Fold on all values.

val size : t -> int

Number of elements (linear complexity).

Conversions

The interface of of_gen, of_seq, of_klist has changed since 0.16 (the old signatures are now add_seq, add_gen, add_klist).

val to_list : t -> elt list

Return the elements of the heap, in no particular order.

val to_list_sorted : t -> elt list

Return the elements in increasing order.

since
1.1
val add_list : t -> elt list -> t

Add the elements of the list to the heap. An element occurring several times will be added that many times to the heap.

since
0.16
val of_list : elt list -> t

of_list l is add_list empty l. Complexity: O(n log n).

val add_seq : t -> elt sequence -> t
since
0.16
val of_seq : elt sequence -> t

Build a heap from a given sequence. Complexity: O(n log n).

val to_seq : t -> elt sequence

Return a sequence of the elements of the heap.

val to_seq_sorted : t -> elt sequence

Iterate on the elements, in increasing order.

since
1.1
val add_klist : t -> elt klist -> t
since
0.16
val of_klist : elt klist -> t

Build a heap from a given klist. Complexity: O(n log n).

val to_klist : t -> elt klist

Return a klist of the elements of the heap.

val add_gen : t -> elt gen -> t
since
0.16
val of_gen : elt gen -> t

Build a heap from a given gen. Complexity: O(n log n).

val to_gen : t -> elt gen

Return a gen of the elements of the heap.

val to_tree : t -> elt ktree

Return a ktree of the elements of the heap.

val pp : ?⁠sep:string -> elt printer -> t printer

Printer. Renamed from print since 2.0

since
0.16
\ No newline at end of file +S (containers.CCHeap.S)

Module type CCHeap.S

type elt
type t
val empty : t

Empty heap.

val is_empty : t -> bool

Is the heap empty?

exception Empty
val merge : t -> t -> t

Merge two heaps.

val insert : elt -> t -> t

Insert a value in the heap.

val add : t -> elt -> t

Synonym to insert.

val filter : (elt -> bool) -> t -> t

Filter values, only retaining the ones that satisfy the predicate. Linear time at least.

val find_min : t -> elt option

Find minimal element.

val find_min_exn : t -> elt

Like find_min but can fail.

raises Empty

if the heap is empty.

val take : t -> (t * elt) option

Extract and return the minimum element, and the new heap (without this element), or None if the heap is empty.

val take_exn : t -> t * elt

Like take, but can fail.

raises Empty

if the heap is empty.

val delete_one : (elt -> elt -> bool) -> elt -> t -> t

Delete one occurrence of a value if it exist in the heap. delete_one eq x h, use eq to find one x in h and delete it. If h do not contain x then it return h.

since
2.0
val delete_all : (elt -> elt -> bool) -> elt -> t -> t

Delete all occurrences of a value in the heap. delete_all eq x h, use eq to find all x in h and delete them. If h do not contain x then it return h. The difference with filter is that delete_all stops as soon as it enters a subtree whose root is bigger than the element.

since
2.0
val iter : (elt -> unit) -> t -> unit

Iterate on elements.

val fold : ('a -> elt -> 'a) -> 'a -> t -> 'a

Fold on all values.

val size : t -> int

Number of elements (linear complexity).

Conversions

The interface of of_gen, of_seq, of_klist has changed since 0.16 (the old signatures are now add_seq, add_gen, add_klist).

val to_list : t -> elt list

Return the elements of the heap, in no particular order.

val to_list_sorted : t -> elt list

Return the elements in increasing order.

since
1.1
val add_list : t -> elt list -> t

Add the elements of the list to the heap. An element occurring several times will be added that many times to the heap.

since
0.16
val of_list : elt list -> t

of_list l is add_list empty l. Complexity: O(n log n).

val add_seq : t -> elt sequence -> t
since
0.16
val of_seq : elt sequence -> t

Build a heap from a given sequence. Complexity: O(n log n).

val to_seq : t -> elt sequence

Return a sequence of the elements of the heap.

val to_seq_sorted : t -> elt sequence

Iterate on the elements, in increasing order.

since
1.1
val add_klist : t -> elt klist -> t
since
0.16
val of_klist : elt klist -> t

Build a heap from a given klist. Complexity: O(n log n).

val to_klist : t -> elt klist

Return a klist of the elements of the heap.

val add_gen : t -> elt gen -> t
since
0.16
val of_gen : elt gen -> t

Build a heap from a given gen. Complexity: O(n log n).

val to_gen : t -> elt gen

Return a gen of the elements of the heap.

val to_tree : t -> elt ktree

Return a ktree of the elements of the heap.

val to_string : ?⁠sep:string -> (elt -> string) -> t -> string

Print the heap in a string

since
NEXT_RELEASE
val pp : ?⁠sep:string -> elt printer -> t printer

Printer. Renamed from print since 2.0

since
0.16
\ No newline at end of file diff --git a/dev/containers/CCHeap/module-type-TOTAL_ORD/index.html b/dev/containers/CCHeap/module-type-TOTAL_ORD/index.html new file mode 100644 index 00000000..a30fe93c --- /dev/null +++ b/dev/containers/CCHeap/module-type-TOTAL_ORD/index.html @@ -0,0 +1,2 @@ + +TOTAL_ORD (containers.CCHeap.TOTAL_ORD)

Module type CCHeap.TOTAL_ORD

type t
val compare : t -> t -> int

compare a b shall return a negative value if a is smaller than b, 0 if a and b are equal or a positive value if a is greater than b

\ No newline at end of file diff --git a/dev/containers.data/CCZipper/.jbuilder-keep b/dev/containers/CCHet/.dune-keep similarity index 100% rename from dev/containers.data/CCZipper/.jbuilder-keep rename to dev/containers/CCHet/.dune-keep diff --git a/dev/containers/CCHet/Key/index.html b/dev/containers/CCHet/Key/index.html new file mode 100644 index 00000000..8e17f781 --- /dev/null +++ b/dev/containers/CCHet/Key/index.html @@ -0,0 +1,2 @@ + +Key (containers.CCHet.Key)

Module CCHet.Key

type 'a t
val create : unit -> 'a t
val equal : 'a t -> 'a t -> bool

Compare two keys that have compatible types.

\ No newline at end of file diff --git a/dev/containers/CCHet/Map/index.html b/dev/containers/CCHet/Map/index.html new file mode 100644 index 00000000..832ba600 --- /dev/null +++ b/dev/containers/CCHet/Map/index.html @@ -0,0 +1,2 @@ + +Map (containers.CCHet.Map)

Module CCHet.Map

Immutable map

type t
val empty : t
val mem : _ Key.t -> t -> bool
val add : 'a Key.t -> 'a -> t -> t
val remove : _ Key.t -> t -> t
val length : t -> int
val cardinal : t -> int
val find : 'a Key.t -> t -> 'a option
val find_exn : 'a Key.t -> t -> 'a
raises Not_found

if the key is not in the table.

val iter : (pair -> unit) -> t -> unit
val to_seq : t -> pair sequence
val of_seq : pair sequence -> t
val add_seq : t -> pair sequence -> t
val add_list : t -> pair list -> t
val of_list : pair list -> t
val to_list : t -> pair list
\ No newline at end of file diff --git a/dev/containers/CCHet/Tbl/index.html b/dev/containers/CCHet/Tbl/index.html new file mode 100644 index 00000000..9028607a --- /dev/null +++ b/dev/containers/CCHet/Tbl/index.html @@ -0,0 +1,2 @@ + +Tbl (containers.CCHet.Tbl)

Module CCHet.Tbl

Imperative table indexed by Key

type t
val create : ?⁠size:int -> unit -> t
val mem : t -> _ Key.t -> bool
val add : t -> 'a Key.t -> 'a -> unit
val remove : t -> _ Key.t -> unit
val length : t -> int
val find : t -> 'a Key.t -> 'a option
val find_exn : t -> 'a Key.t -> 'a
raises Not_found

if the key is not in the table.

val iter : (pair -> unit) -> t -> unit
val to_seq : t -> pair sequence
val of_seq : pair sequence -> t
val add_seq : t -> pair sequence -> unit
val add_list : t -> pair list -> unit
val of_list : pair list -> t
val to_list : t -> pair list
\ No newline at end of file diff --git a/dev/containers/CCHet/index.html b/dev/containers/CCHet/index.html new file mode 100644 index 00000000..792962fc --- /dev/null +++ b/dev/containers/CCHet/index.html @@ -0,0 +1,2 @@ + +CCHet (containers.CCHet)

Module CCHet

Associative containers with Heterogeneous Values

This is similar to CCMixtbl, but the injection is directly used as a key.

since
0.17
type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
module Key : sig ... end
type pair =
| Pair : 'a Key.t * 'a -> pair
module Tbl : sig ... end
module Map : sig ... end
\ No newline at end of file diff --git a/dev/containers/CCIO.odoc b/dev/containers/CCIO.odoc deleted file mode 100644 index 76c3dd6acff3fc99461f5e79684c8563c0ab4ccd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7528 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 bg2fk -File (containers.CCIO.File)

Module CCIO.File

type t = string

A file should be represented by its absolute path, but currently this is not enforced.

val to_string : t -> string
val make : string -> t

Build a file representation from a path (absolute or relative).

val exists : t -> bool
val is_directory : t -> bool
val remove_exn : t -> unit

remove_exn path tries to remove the file at path from the file system.

raises Sys_error

if there is no file at path or access rights are wrong.

since
0.8
val remove : t -> unit or_error

Like remove_exn but with an error monad.

since
0.8
val remove_noerr : t -> unit

Like remove_exn but do not raise any exception on failure.

since
0.8
val read_dir : ?⁠recurse:bool -> t -> t gen

read_dir d returns a sequence of files and directory contained in the directory d (or an empty stream if d is not a directory).

raises Sys_error

in case of error (e.g. permission denied).

parameter recurse

if true (default false), sub-directories are also explored.

val read_exn : t -> string

Read the content of the given file, or raises some exception.

raises Sys_error

in case of error.

since
0.16
val read : t -> string or_error

Read the content of the given file.

since
0.16
val append_exn : t -> string -> unit

Append the given string into the given file, possibly raising.

raises Sys_error

in case of error.

since
0.16
val append : t -> string -> unit or_error

Append the given string into the given file.

since
0.16
val write_exn : t -> string -> unit

Write the given string into the given file, possibly raising.

raises Sys_error

in case of error.

since
0.16
val write : t -> string -> unit or_error

Write the given string into the given file.

since
0.16
type walk_item = [ `File | `Dir ] * t
val walk : t -> walk_item gen

Like read_dir (with recurse=true), this function walks a directory recursively and yields either files or directories. Is a file anything that doesn't satisfy is_directory (including symlinks, etc.)

raises Sys_error

in case of error (e.g. permission denied) during iteration.

val walk_l : t -> walk_item list

Like walk but returns a list (therefore it's eager and might take some time on large directories).

since
1.1
val show_walk_item : walk_item -> string
val with_temp : ?⁠temp_dir:string -> prefix:string -> suffix:string -> (string -> 'a) -> 'a

with_temp ~prefix ~suffix f will call f with the name of a new temporary file (located in temp_dir). After f returns, the file is deleted. Best to be used in combination with with_out. See Filename.temp_file.

since
0.17
\ No newline at end of file +File (containers.CCIO.File)

Module CCIO.File

type t = string

A file should be represented by its absolute path, but currently this is not enforced.

val to_string : t -> string
val make : string -> t

Build a file representation from a path (absolute or relative).

val exists : t -> bool
val is_directory : t -> bool
val remove_exn : t -> unit

remove_exn path tries to remove the file at path from the file system.

raises Sys_error

if there is no file at path or access rights are wrong.

since
0.8
val remove : t -> unit or_error

Like remove_exn but with an error monad.

since
0.8
val remove_noerr : t -> unit

Like remove_exn but do not raise any exception on failure.

since
0.8
val read_dir : ?⁠recurse:bool -> t -> t gen

read_dir d returns a sequence of files and directory contained in the directory d (or an empty stream if d is not a directory).

raises Sys_error

in case of error (e.g. permission denied).

parameter recurse

if true (default false), sub-directories are also explored.

val read_exn : t -> string

Read the content of the given file, or raises some exception.

raises Sys_error

in case of error.

since
0.16
val read : t -> string or_error

Read the content of the given file.

since
0.16
val append_exn : t -> string -> unit

Append the given string into the given file, possibly raising.

raises Sys_error

in case of error.

since
0.16
val append : t -> string -> unit or_error

Append the given string into the given file.

since
0.16
val write_exn : t -> string -> unit

Write the given string into the given file, possibly raising.

raises Sys_error

in case of error.

since
0.16
val write : t -> string -> unit or_error

Write the given string into the given file.

since
0.16
type walk_item = [ `File | `Dir ] * t
val walk : t -> walk_item gen

Like read_dir (with recurse=true), this function walks a directory recursively and yields either files or directories. Is a file anything that doesn't satisfy is_directory (including symlinks, etc.)

raises Sys_error

in case of error (e.g. permission denied) during iteration.

val walk_l : t -> walk_item list

Like walk but returns a list (therefore it's eager and might take some time on large directories).

since
1.1
val show_walk_item : walk_item -> string
val with_temp : ?⁠temp_dir:string -> prefix:string -> suffix:string -> (string -> 'a) -> 'a

with_temp ~prefix ~suffix f will call f with the name of a new temporary file (located in temp_dir). After f returns, the file is deleted. Best to be used in combination with with_out. See Filename.temp_file.

since
0.17
\ No newline at end of file diff --git a/dev/containers/CCIO/index.html b/dev/containers/CCIO/index.html index 618d2b00..113db146 100644 --- a/dev/containers/CCIO/index.html +++ b/dev/containers/CCIO/index.html @@ -1,13 +1,22 @@ -CCIO (containers.CCIO)

Module CCIO

IO Utils

Simple utilities to deal with basic Input/Output tasks in a resource-safe way. For advanced IO tasks, the user is advised to use something like Lwt or Async, that are far more comprehensive.

Examples:

  • obtain the list of lines of a file:
# let l = CCIO.(with_in "/tmp/some_file" read_lines_l);;
  • transfer one file into another:
# CCIO.(
+CCIO (containers.CCIO)

Module CCIO

IO Utils

Simple utilities to deal with basic Input/Output tasks in a resource-safe way. For advanced IO tasks, the user is advised to use something like Lwt or Async, that are far more comprehensive.

Examples:

  • obtain the list of lines of a file:
# let l = CCIO.(with_in "/tmp/some_file" read_lines_l);;
  • transfer one file into another:
# CCIO.(
     with_in "/tmp/input"
       (fun ic ->
          let chunks = read_chunks ic in
-         with_out ~flags:[Open_binary] ~mode:0o644 "/tmp/output"
+         with_out ~flags:[Open_binary; Open_creat] ~mode:0o644 "/tmp/output"
            (fun oc ->
               write_gen oc chunks
            )
       )
-  ) ;;
since
0.6
before 0.12

was in 'containers.io', now moved into 'containers'

type 'a or_error = ('a, string) Result.result
type 'a gen = unit -> 'a option

See Gen in the gen library.

Input

val with_in : ?⁠mode:int -> ?⁠flags:Pervasives.open_flag list -> string -> (Pervasives.in_channel -> 'a) -> 'a

Open an input file with the given optional flag list, calls the function on the input channel. When the function raises or returns, the channel is closed.

raises Sys_error

in case of error (same as open_in and close_in).

parameter flags

opening flags (default [Open_text]). Open_rdonly is used in any cases.

val read_chunks : ?⁠size:int -> Pervasives.in_channel -> string gen

Read the channel's content into chunks of size size.

val read_line : Pervasives.in_channel -> string option

Read a line from the channel. Returns None if the input is terminated. The "\n" is removed from the line.

val read_lines : Pervasives.in_channel -> string gen

Read all lines. The generator should be traversed only once.

val read_lines_l : Pervasives.in_channel -> string list

Read all lines into a list.

val read_all : ?⁠size:int -> Pervasives.in_channel -> string

Read the whole channel into a buffer, then converted into a string.

parameter size

the internal buffer size.

since
0.7
val read_all_bytes : ?⁠size:int -> Pervasives.in_channel -> Bytes.t

Read the whole channel into a mutable byte array.

parameter size

the internal buffer size.

since
0.12

Output

val with_out : ?⁠mode:int -> ?⁠flags:Pervasives.open_flag list -> string -> (Pervasives.out_channel -> 'a) -> 'a

Like with_in but for an output channel.

parameter flags

opening flags (default [Open_creat; Open_trunc; Open_text]).

raises Sys_error

in case of error (same as open_out and close_out). Open_wronly is used in any cases.

val with_out_a : ?⁠mode:int -> ?⁠flags:Pervasives.open_flag list -> string -> (Pervasives.out_channel -> 'a) -> 'a

Like with_out but with the [Open_append; Open_creat; Open_wronly] flags activated, to append to the file.

raises Sys_error

in case of error (same as open_out and close_out).

val write_line : Pervasives.out_channel -> string -> unit

Write the given string on the channel, followed by "\n".

val write_gen : ?⁠sep:string -> Pervasives.out_channel -> string gen -> unit

Write the given strings on the output. If provided, add sep between every two strings (but not at the end).

val write_lines : Pervasives.out_channel -> string gen -> unit

Write every string on the output, followed by "\n".

val write_lines_l : Pervasives.out_channel -> string list -> unit

Both

val with_in_out : ?⁠mode:int -> ?⁠flags:Pervasives.open_flag list -> string -> (Pervasives.in_channel -> Pervasives.out_channel -> 'a) -> 'a

Combines with_in and with_out.

parameter flags

opening flags (default [Open_creat]).

raises Sys_error

in case of error.

since
0.12

Misc for Generators

val tee : ('a -> unit) list -> 'a gen -> 'a gen

tee funs gen behaves like gen, but each element is given to every function f in funs at the time the element is produced.

File and file names

How to list recursively files in a directory:

# let files = CCIO.File.read_dir ~recurse:true (CCIO.File.make "/tmp");;
+  ) ;;
  • Note that the lifetime of an IO generator is tied to the underlying channel. In the example above, chunks must be used in the scope of ic. This will raise an error:
# CCIO.(
+    let chunks =
+      with_in "/tmp/input"
+        (fun ic ->read_chunks ic)
+    in
+    with_out ~flags:[Open_binary;Open_creat] ~mode:0o644 "/tmp/output"
+       (fun oc ->
+          write_gen oc chunks
+       )
+  ) ;;
since
0.6
before 0.12

was in 'containers.io', now moved into 'containers'

type 'a or_error = ('a, string) Result.result
type 'a gen = unit -> 'a option

See Gen in the gen library.

Input

val with_in : ?⁠mode:int -> ?⁠flags:Pervasives.open_flag list -> string -> (Pervasives.in_channel -> 'a) -> 'a

Open an input file with the given optional flag list, calls the function on the input channel. When the function raises or returns, the channel is closed.

raises Sys_error

in case of error (same as open_in and close_in).

parameter flags

opening flags (default [Open_text]). Open_rdonly is used in any cases.

val read_chunks : ?⁠size:int -> Pervasives.in_channel -> string gen

Read the channel's content into chunks of size size.

val read_line : Pervasives.in_channel -> string option

Read a line from the channel. Returns None if the input is terminated. The "\n" is removed from the line.

val read_lines : Pervasives.in_channel -> string gen

Read all lines. The generator should be traversed only once.

val read_lines_l : Pervasives.in_channel -> string list

Read all lines into a list.

val read_all : ?⁠size:int -> Pervasives.in_channel -> string

Read the whole channel into a buffer, then converted into a string.

parameter size

the internal buffer size.

since
0.7
val read_all_bytes : ?⁠size:int -> Pervasives.in_channel -> Bytes.t

Read the whole channel into a mutable byte array.

parameter size

the internal buffer size.

since
0.12

Output

val with_out : ?⁠mode:int -> ?⁠flags:Pervasives.open_flag list -> string -> (Pervasives.out_channel -> 'a) -> 'a

Like with_in but for an output channel.

parameter flags

opening flags (default [Open_creat; Open_trunc; Open_text]).

raises Sys_error

in case of error (same as open_out and close_out). Open_wronly is used in any cases.

val with_out_a : ?⁠mode:int -> ?⁠flags:Pervasives.open_flag list -> string -> (Pervasives.out_channel -> 'a) -> 'a

Like with_out but with the [Open_append; Open_creat; Open_wronly] flags activated, to append to the file.

raises Sys_error

in case of error (same as open_out and close_out).

val write_line : Pervasives.out_channel -> string -> unit

Write the given string on the channel, followed by "\n".

val write_gen : ?⁠sep:string -> Pervasives.out_channel -> string gen -> unit

Write the given strings on the output. If provided, add sep between every two strings (but not at the end).

val write_lines : Pervasives.out_channel -> string gen -> unit

Write every string on the output, followed by "\n".

val write_lines_l : Pervasives.out_channel -> string list -> unit

Both

val with_in_out : ?⁠mode:int -> ?⁠flags:Pervasives.open_flag list -> string -> (Pervasives.in_channel -> Pervasives.out_channel -> 'a) -> 'a

Combines with_in and with_out.

parameter flags

opening flags (default [Open_creat]).

raises Sys_error

in case of error.

since
0.12

Misc for Generators

val tee : ('a -> unit) list -> 'a gen -> 'a gen

tee funs gen behaves like gen, but each element is given to every function f in funs at the time the element is produced.

File and file names

How to list recursively files in a directory:

# let files = CCIO.File.read_dir ~recurse:true (CCIO.File.make "/tmp");;
 # CCIO.write_lines stdout files;;

See File.walk if you also need to list directories:

# let content = CCIO.File.walk (CCIO.File.make "/tmp");;
 # Gen.map CCIO.File.show_walk_item content |> CCIO.write_lines stdout;;
module File : sig ... end
\ No newline at end of file diff --git a/dev/containers.iter/CCKTree/.jbuilder-keep b/dev/containers/CCImmutArray/.dune-keep similarity index 100% rename from dev/containers.iter/CCKTree/.jbuilder-keep rename to dev/containers/CCImmutArray/.dune-keep diff --git a/dev/containers/CCImmutArray/index.html b/dev/containers/CCImmutArray/index.html new file mode 100644 index 00000000..9da27511 --- /dev/null +++ b/dev/containers/CCImmutArray/index.html @@ -0,0 +1,2 @@ + +CCImmutArray (containers.CCImmutArray)

Module CCImmutArray

Immutable Arrays

Purely functional use of arrays. Update is costly, but reads are very fast. Sadly, it is not possible to make this type covariant without using black magic.

since
0.17
type 'a t

Array of values of type 'a. The underlying type really is an array, but it will never be modified.

It should be covariant but OCaml will not accept it.

val empty : 'a t
val length : _ t -> int
val singleton : 'a -> 'a t
val doubleton : 'a -> 'a -> 'a t
val make : int -> 'a -> 'a t

make n x makes an array of n times x.

val init : int -> (int -> 'a) -> 'a t

init n f makes the array [| f 0; f 1; ... ; f (n-1) |].

raises Invalid_argument

if n < 0.

val get : 'a t -> int -> 'a

Access the element.

val set : 'a t -> int -> 'a -> 'a t

Copy the array and modify its copy.

val sub : 'a t -> int -> int -> 'a t

sub a start len returns a fresh array of length len, containing the elements from start to pstart + len - 1 of array a.

Raises Invalid_argument "Array.sub" if start and len do not designate a valid subarray of a; that is, if start < 0, or len < 0, or start + len > Array.length a.

since
1.5
val map : ('a -> 'b) -> 'a t -> 'b t
val mapi : (int -> 'a -> 'b) -> 'a t -> 'b t
val append : 'a t -> 'a t -> 'a t
val iter : ('a -> unit) -> 'a t -> unit
val iteri : (int -> 'a -> unit) -> 'a t -> unit
val foldi : ('a -> int -> 'b -> 'a) -> 'a -> 'b t -> 'a
val fold : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a
val for_all : ('a -> bool) -> 'a t -> bool
val exists : ('a -> bool) -> 'a t -> bool

Conversions

type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
val of_list : 'a list -> 'a t
val to_list : 'a t -> 'a list
val of_array_unsafe : 'a array -> 'a t

Take ownership of the given array. Careful, the array must NOT be modified afterwards!

val to_seq : 'a t -> 'a sequence
val of_seq : 'a sequence -> 'a t
val of_gen : 'a gen -> 'a t
val to_gen : 'a t -> 'a gen

IO

type 'a printer = Format.formatter -> 'a -> unit
val pp : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> 'a printer -> 'a t printer
\ No newline at end of file diff --git a/dev/containers/CCInt.odoc b/dev/containers/CCInt.odoc deleted file mode 100644 index 85ae23be03c1585526fea1d6451d43e8edaa7dbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4526 zcmbtX3vg6d8P3_9BP5+7b+kna_JrL{cJtW1oABx+z(OE2V=0gDD1$WK-MyP!*u8hT z_ii?kPO8ETPN&wp)dVRW=kgLNNGTYxwPHF@DT-x~$F#I{I$9ZPkpg3NbVU8nIroO3 z3DX&e+3fxI{NMk7=YQQFJ*6k>Vv+iYw7Kv5$4W{{g76{m`7C_KAF593nkB26VwgLE z&CRWv6_<8BwC@ zQ`g+QNZ0hNZsa=Eq%D2CXrfj2MZ?L1dl6{oifB@b*9yvFmRk~T=>#OtM}uxar;ocX(Xdb-B6-D zVG+1{Sv1pH7^KMQJ9GfAs!HnFoNOqNPrGdX@=k?{ zA5>G zve{|l1>7YLb3ZNOYms;8+_4AsSIsZ>j2!&u{HZsNzHM@w)1Vj6q)8ST|3;&8GlYMFd{MdrU}_p zsM4JS9-8IYVQMH=-q0Yd#Q-~V?3vV%RZ~e(OXpbtlw!D?Zvm%7%AH~zvnbO9@Q@!% zIQ9&l$eeDftiEq$)G1cTjvb^>x!|V)G{cedWy}lnE46A}kcU*eY;@$aoK}FUEJk4& zEHmqpV+SbIhyVv^6P4JN15zXwbML&{{ocp#zMqGXpo!shM%Rt@l-k8YP&Xt2Z4D~2 zh2_MpJPJyx$*RoI^IA&PIv@lE*+`jg==qh>ss<$!DQ~r)J}uQutNapk7}YGTrnh;Z zH4xvd@FkK2W7Q@4n)`i<6F%({ZuA3yQLP#R&So50Kfo_Ac2go7j4bCUf*YWT9u^+B z)Xdu3Td15DAnP1{{NFroxIF&KdHg-jTAHBFs+_^%V%P*dFbG9hAwy5wQ0cph1g#81 z$HK^jb3nrx?~FV|hBZDn@U?1#532SKMFSf%Z@0mWtO~YSvZYj5%zy{$51G)Qik4IW zv}icU^Mk87(K>g;5OknYcmhC@cOpSDQ-NFj7*BKHiJ-+|9uah`)}>`;^;Zfv zqO5#4tfz+@yPe|#@OYuG=h%c5gb%ocefNiRx%Pz0<`0`h)0eQKU{iRCl#rwt|2M^D zP%kk82NkZUa$;w90ZVDTu{djjn>EhPsN zd7Wc7LdFyWDw|FFA-*(i=vmf+Fs}n_w!$MQm(2lQ>Oe!YZ3#gJ&*qnsP#pgD2?bxwM`3jirFxU8d0@Prniz6|YWmYkU0;>f~ zwv1|85W>A93|~K=y-+_&ZWavQVe`Vaxj`0QUy~akpZmrozWFRtdx-A{L6aS>^RQO~ zKMjgTf{=yz)BhJK8lfTh}K?+W$fLcPHsY8pZNs;7NJXum16AM%Gruw7c}YL|`? z+J6?>Yk|rL%u6SD>XW#7sZXdIfza%c)ayL;m{7k@sBZ~`>gs?xtSNIdDhxZ;tvvaE zflvH9r{2>Zwt2*sB&Sss)$3xV4p`49tYl zfsN8QmBi=Puj?KPYfbF78|4u=`HHM?8ni1aO55+y_8Sw?_Ba zA@tX|`ac7LW@dEt$2~uMZVK!yOU+o^x>@1w-8I+6(KMkQWp54T821 zR1k6-Y`p|^5R?$|Dp*lr)rB=w$ZH6iN6=i@Wrf^MP>djnpei9J37SOE{m>FZ21{cI z`V_t?#P#?FzK;JW1RcMN-@)gEVB**DNqkHQ1$+b_#?K33Bi@O3;O`3I3H(j`6y79+ MO}HBuum-{X58?f -Infix (containers.CCInt.Infix)

Module CCInt.Infix

val (=) : t -> t -> bool
since
0.17
val (<>) : t -> t -> bool
since
0.17
val (<) : t -> t -> bool
since
0.17
val (>) : t -> t -> bool
since
0.17
val (<=) : t -> t -> bool
since
0.17
val (>=) : t -> t -> bool
since
0.17
val (--) : t -> t -> t sequence

Alias to range.

since
1.2
val (--^) : t -> t -> t sequence

Alias to range'.

since
1.2
val (+) : t -> t -> t
since
2.1
val (-) : t -> t -> t
since
2.1
val (~-) : t -> t
since
2.1
val (*) : t -> t -> t
since
2.1
val (/) : t -> t -> t
since
2.1
val (**) : t -> t -> t
since
2.4
val (mod) : t -> t -> t
since
2.1
val (land) : t -> t -> t
since
2.1
val (lor) : t -> t -> t
since
2.1
val (lxor) : t -> t -> t
since
2.1
val (lnot) : t -> t
since
2.1
val (lsl) : t -> int -> t
since
2.1
val (lsr) : t -> int -> t
since
2.1
val (asr) : t -> int -> t
since
2.1
\ No newline at end of file +Infix (containers.CCInt.Infix)

Module CCInt.Infix

val (=) : t -> t -> bool
since
0.17
val (<>) : t -> t -> bool
since
0.17
val (<) : t -> t -> bool
since
0.17
val (>) : t -> t -> bool
since
0.17
val (<=) : t -> t -> bool
since
0.17
val (>=) : t -> t -> bool
since
0.17
val (--) : t -> t -> t sequence

Alias to range.

since
1.2
val (--^) : t -> t -> t sequence

Alias to range'.

since
1.2
val (+) : t -> t -> t
since
2.1
val (-) : t -> t -> t
since
2.1
val (~-) : t -> t
since
2.1
val (*) : t -> t -> t
since
2.1
val (/) : t -> t -> t
since
2.1
val (**) : t -> t -> t
since
2.4
val (mod) : t -> t -> t
since
2.1
val (land) : t -> t -> t
since
2.1
val (lor) : t -> t -> t
since
2.1
val (lxor) : t -> t -> t
since
2.1
val (lnot) : t -> t
since
2.1
val (lsl) : t -> int -> t
since
2.1
val (lsr) : t -> int -> t
since
2.1
val (asr) : t -> int -> t
since
2.1
\ No newline at end of file diff --git a/dev/containers/CCInt/index.html b/dev/containers/CCInt/index.html index f312fa06..9beb548a 100644 --- a/dev/containers/CCInt/index.html +++ b/dev/containers/CCInt/index.html @@ -1,2 +1,2 @@ -CCInt (containers.CCInt)

Module CCInt

Basic Int functions

type t = int
val compare : t -> t -> int

The comparison function for integers with the same specification as Pervasives.compare.

val equal : t -> t -> bool

Equality function for integers.

val hash : t -> int
val sign : t -> int

sign i is one of -1, 0, 1.

val neg : t -> t

Unary negation. neg i = - i.

since
0.5
val pow : t -> t -> t

pow base exponent returns base raised to the power of exponent. pow a b = a^b for positive integers a and b. Raises Invalid_argument if a = b = 0 or b < 0.

since
0.11
val floor_div : t -> t -> t

floor_div a n is integer division rounding towards negative infinity. It satisfies a = m * floor_div a n + rem a n.

since
1.2
val rem : t -> t -> t

rem a n is the remainder of dividing a by n, with the same sign as n.

since
1.2
type 'a printer = Format.formatter -> 'a -> unit
type 'a random_gen = Random.State.t -> 'a
type 'a sequence = ('a -> unit) -> unit
val random : int -> t random_gen
val random_small : t random_gen
val random_range : int -> int -> t random_gen
val pp : t printer
val to_string : t -> string

Return the string representation of its argument, in signed decimal.

since
0.13
val of_string : string -> t option
since
0.13
val pp_binary : t printer

Print as "0b00101010".

since
0.20
val to_string_binary : t -> string
since
0.20
val min : t -> t -> t

The minimum of two integers.

since
0.17
val max : t -> t -> t

The maximum of two integers.

since
0.17
val range_by : step:t -> t -> t -> t sequence

range_by ~step i j iterates on integers from i to j included, where the difference between successive elements is step. Use a negative step for a decreasing list.

raises Invalid_argument

if step=0.

since
1.2
val range : t -> t -> t sequence

range i j iterates on integers from i to j included . It works both for decreasing and increasing ranges.

since
1.2
val range' : t -> t -> t sequence

Like range but the second bound is excluded. For instance range' 0 5 = Iter.of_list [0;1;2;3;4].

since
1.2

Infix Operators

since
0.17
module Infix : sig ... end
include module type of Infix
val (=) : t -> t -> bool
since
0.17
val (<>) : t -> t -> bool
since
0.17
val (<) : t -> t -> bool
since
0.17
val (>) : t -> t -> bool
since
0.17
val (<=) : t -> t -> bool
since
0.17
val (>=) : t -> t -> bool
since
0.17
val (--) : t -> t -> t sequence

Alias to range.

since
1.2
val (--^) : t -> t -> t sequence

Alias to range'.

since
1.2
val (+) : t -> t -> t
since
2.1
val (-) : t -> t -> t
since
2.1
val (~-) : t -> t
since
2.1
val (*) : t -> t -> t
since
2.1
val (/) : t -> t -> t
since
2.1
val (**) : t -> t -> t
since
2.4
val (mod) : t -> t -> t
since
2.1
val (land) : t -> t -> t
since
2.1
val (lor) : t -> t -> t
since
2.1
val (lxor) : t -> t -> t
since
2.1
val (lnot) : t -> t
since
2.1
val (lsl) : t -> int -> t
since
2.1
val (lsr) : t -> int -> t
since
2.1
val (asr) : t -> int -> t
since
2.1
\ No newline at end of file +CCInt (containers.CCInt)

Module CCInt

Basic Int functions

type t = int
val compare : t -> t -> int

The comparison function for integers with the same specification as Pervasives.compare.

val equal : t -> t -> bool

Equality function for integers.

val hash : t -> int
val sign : t -> int

sign i is one of -1, 0, 1.

val neg : t -> t

Unary negation. neg i = - i.

since
0.5
val pow : t -> t -> t

pow base exponent returns base raised to the power of exponent. pow a b = a^b for positive integers a and b. Raises Invalid_argument if a = b = 0 or b < 0.

since
0.11
val floor_div : t -> t -> t

floor_div a n is integer division rounding towards negative infinity. It satisfies a = m * floor_div a n + rem a n.

since
1.2
val rem : t -> t -> t

rem a n is the remainder of dividing a by n, with the same sign as n.

since
1.2
type 'a printer = Format.formatter -> 'a -> unit
type 'a random_gen = Random.State.t -> 'a
type 'a sequence = ('a -> unit) -> unit
val random : int -> t random_gen
val random_small : t random_gen
val random_range : int -> int -> t random_gen
val pp : t printer
val to_string : t -> string

Return the string representation of its argument, in signed decimal.

since
0.13
val of_string : string -> t option
since
0.13
val pp_binary : t printer

Print as "0b00101010".

since
0.20
val to_string_binary : t -> string
since
0.20
val min : t -> t -> t

The minimum of two integers.

since
0.17
val max : t -> t -> t

The maximum of two integers.

since
0.17
val range_by : step:t -> t -> t -> t sequence

range_by ~step i j iterates on integers from i to j included, where the difference between successive elements is step. Use a negative step for a decreasing list.

raises Invalid_argument

if step=0.

since
1.2
val range : t -> t -> t sequence

range i j iterates on integers from i to j included . It works both for decreasing and increasing ranges.

since
1.2
val range' : t -> t -> t sequence

Like range but the second bound is excluded. For instance range' 0 5 = Iter.of_list [0;1;2;3;4].

since
1.2

Infix Operators

since
0.17
module Infix : sig ... end
include module type of Infix
val (=) : t -> t -> bool
since
0.17
val (<>) : t -> t -> bool
since
0.17
val (<) : t -> t -> bool
since
0.17
val (>) : t -> t -> bool
since
0.17
val (<=) : t -> t -> bool
since
0.17
val (>=) : t -> t -> bool
since
0.17
val (--) : t -> t -> t sequence

Alias to range.

since
1.2
val (--^) : t -> t -> t sequence

Alias to range'.

since
1.2
val (+) : t -> t -> t
since
2.1
val (-) : t -> t -> t
since
2.1
val (~-) : t -> t
since
2.1
val (*) : t -> t -> t
since
2.1
val (/) : t -> t -> t
since
2.1
val (**) : t -> t -> t
since
2.4
val (mod) : t -> t -> t
since
2.1
val (land) : t -> t -> t
since
2.1
val (lor) : t -> t -> t
since
2.1
val (lxor) : t -> t -> t
since
2.1
val (lnot) : t -> t
since
2.1
val (lsl) : t -> int -> t
since
2.1
val (lsr) : t -> int -> t
since
2.1
val (asr) : t -> int -> t
since
2.1
\ No newline at end of file diff --git a/dev/containers/CCInt32.odoc b/dev/containers/CCInt32.odoc deleted file mode 100644 index 217219fb0a770d2e29037a80958b5c0b5c3a2c3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7236 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 Tb{nD*lVVkQnY3NVY019 -Infix (containers.CCInt32.Infix)

Module CCInt32.Infix

val (+) : t -> t -> t
val (-) : t -> t -> t
val (~-) : t -> t
val (*) : t -> t -> t
val (/) : t -> t -> t
val (mod) : t -> t -> t
val (land) : t -> t -> t
val (lor) : t -> t -> t
val (lxor) : t -> t -> t
val (lnot) : t -> t
val (lsl) : t -> int -> t
val (lsr) : t -> int -> t
val (asr) : t -> int -> t
val (=) : t -> t -> bool
val (<>) : t -> t -> bool
val (>) : t -> t -> bool
val (>=) : t -> t -> bool
val (<=) : t -> t -> bool
val (<) : t -> t -> bool
\ No newline at end of file +Infix (containers.CCInt32.Infix)

Module CCInt32.Infix

val (+) : t -> t -> t
val (-) : t -> t -> t
val (~-) : t -> t
val (*) : t -> t -> t
val (/) : t -> t -> t
val (mod) : t -> t -> t
val (land) : t -> t -> t
val (lor) : t -> t -> t
val (lxor) : t -> t -> t
val (lnot) : t -> t
val (lsl) : t -> int -> t
val (lsr) : t -> int -> t
val (asr) : t -> int -> t
val (=) : t -> t -> bool
val (<>) : t -> t -> bool
val (>) : t -> t -> bool
val (>=) : t -> t -> bool
val (<=) : t -> t -> bool
val (<) : t -> t -> bool
\ No newline at end of file diff --git a/dev/containers/CCInt32/index.html b/dev/containers/CCInt32/index.html index 4efb90e1..9a2e5e19 100644 --- a/dev/containers/CCInt32/index.html +++ b/dev/containers/CCInt32/index.html @@ -1,2 +1,2 @@ -CCInt32 (containers.CCInt32)

Module CCInt32

Int32

Helpers for 32-bit integers.

This module provides operations on the type int32 of signed 32-bit integers. Unlike the built-in int type, the type int32 is guaranteed to be exactly 32-bit wide on all platforms. All arithmetic operations over int32 are taken modulo 232.

Performance notice: values of type int32 occupy more memory space than values of type int, and arithmetic operations on int32 are generally slower than those on int. Use int32 only when the application requires exact 32-bit arithmetic.

since
2.1
include module type of sig ... end
val zero : int32
val one : int32
val minus_one : int32
val neg : int32 -> int32
val add : int32 -> int32 -> int32
val sub : int32 -> int32 -> int32
val mul : int32 -> int32 -> int32
val div : int32 -> int32 -> int32
val rem : int32 -> int32 -> int32
val succ : int32 -> int32
val pred : int32 -> int32
val abs : int32 -> int32
val max_int : int32
val min_int : int32
val logand : int32 -> int32 -> int32
val logor : int32 -> int32 -> int32
val logxor : int32 -> int32 -> int32
val lognot : int32 -> int32
val shift_left : int32 -> int -> int32
val shift_right : int32 -> int -> int32
val shift_right_logical : int32 -> int -> int32
val of_int : int -> int32
val to_int : int32 -> int
val of_float : float -> int32
val to_float : int32 -> float
val of_string : string -> int32
val of_string_opt : string -> int32 option
val to_string : int32 -> string
val bits_of_float : float -> int32
val float_of_bits : int32 -> float
type t = int32
val compare : t -> t -> int
val equal : t -> t -> bool
val format : string -> int32 -> string
val (+) : t -> t -> t

Addition.

val (-) : t -> t -> t

Subtraction.

val (~-) : t -> t

Unary negation.

val (*) : t -> t -> t

Multiplication.

val (/) : t -> t -> t

Integer division. Raise Division_by_zero if the second argument is zero. This division rounds the real quotient of its arguments towards zero, as specified for Pervasives.(/).

val (mod) : t -> t -> t

x mod y is the integer remainder. If y <> zero, the result of x mod y satisfies the following property: x = ((x / y) * y) + (x mod y). If y = 0, x mod y raises Division_by_zero.

val (land) : t -> t -> t

Bitwise logical and.

val (lor) : t -> t -> t

Bitwise logical or.

val (lxor) : t -> t -> t

Bitwise logical exclusive or.

val (lnot) : t -> t

Bitwise logical negation.

val (lsl) : t -> int -> t

x lsl y shifts x to the left by y bits, filling in with zeroes. The result is unspecified if y < 0 or y >= 32.

val (lsr) : t -> int -> t

x lsr y shifts x to the right by y bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of x. The result is unspecified if y < 0 or y >= 32.

val (asr) : t -> int -> t

x asr y shifts x to the right by y bits. This is an arithmetic shift: the sign bit of x is replicated and inserted in the vacated bits. The result is unspecified if y < 0 or y >= 32.

module Infix : sig ... end
include module type of Infix
val (+) : t -> t -> t
val (-) : t -> t -> t
val (~-) : t -> t
val (*) : t -> t -> t
val (/) : t -> t -> t
val (mod) : t -> t -> t
val (land) : t -> t -> t
val (lor) : t -> t -> t
val (lxor) : t -> t -> t
val (lnot) : t -> t
val (lsl) : t -> int -> t
val (lsr) : t -> int -> t
val (asr) : t -> int -> t
val (=) : t -> t -> bool
val (<>) : t -> t -> bool
val (>) : t -> t -> bool
val (>=) : t -> t -> bool
val (<=) : t -> t -> bool
val (<) : t -> t -> bool
val equal : t -> t -> bool

The equal function for 32-bit integers. Like Pervasives.(=) x y).

val hash : t -> int

Like Pervasives.abs (to_int x).

Conversion

val to_int : t -> int

Convert the given 32-bit integer (type int32) to an integer (type int). On 32-bit platforms, the 32-bit integer is taken modulo 231, i.e. the high-order bit is lost during the conversion. On 64-bit platforms, the conversion is exact.

val of_int : int -> t

Alias to Int32.of_int.

val to_float : t -> float

Convert the given 32-bit integer to a floating-point number.

val of_float : float -> t

Alias to Int32.of_float. Convert the given floating-point number to a 32-bit integer, discarding the fractional part (truncate towards 0). The result of the conversion is undefined if, after truncation, the number is outside the range [CCInt32.min_int, CCInt32.max_int].

val to_string : t -> string

Return the string representation of its argument, in signed decimal.

val of_string_exn : string -> t

Alias to Int32.of_string. Convert the given string to a 32-bit integer. The string is read in decimal (by default, or if the string begins with 0u) or in hexadecimal, octal or binary if the string begins with 0x, 0o or 0b respectively.

The 0u prefix reads the input as an unsigned integer in the range [0, 2*CCInt32.max_int+1]. If the input exceeds CCInt32.max_int it is converted to the signed integer CCInt32.min_int + input - CCInt32.max_int - 1.

The _ (underscore) character can appear anywhere in the string and is ignored. Raise Failure "Int32.of_string" if the given string is not a valid representation of an integer, or if the integer represented exceeds the range of integers representable in type int32.

val of_string : string -> t option

Safe version of of_string_exn. Like of_string_exn, but return None instead of raising.

val of_string_opt : string -> t option

Alias to of_string.

\ No newline at end of file +CCInt32 (containers.CCInt32)

Module CCInt32

Int32

Helpers for 32-bit integers.

This module provides operations on the type int32 of signed 32-bit integers. Unlike the built-in int type, the type int32 is guaranteed to be exactly 32-bit wide on all platforms. All arithmetic operations over int32 are taken modulo 232.

Performance notice: values of type int32 occupy more memory space than values of type int, and arithmetic operations on int32 are generally slower than those on int. Use int32 only when the application requires exact 32-bit arithmetic.

since
2.1
include module type of sig ... end
val zero : int32
val one : int32
val minus_one : int32
val neg : int32 -> int32
val add : int32 -> int32 -> int32
val sub : int32 -> int32 -> int32
val mul : int32 -> int32 -> int32
val div : int32 -> int32 -> int32
val rem : int32 -> int32 -> int32
val succ : int32 -> int32
val pred : int32 -> int32
val abs : int32 -> int32
val max_int : int32
val min_int : int32
val logand : int32 -> int32 -> int32
val logor : int32 -> int32 -> int32
val logxor : int32 -> int32 -> int32
val lognot : int32 -> int32
val shift_left : int32 -> int -> int32
val shift_right : int32 -> int -> int32
val shift_right_logical : int32 -> int -> int32
val of_int : int -> int32
val to_int : int32 -> int
val of_float : float -> int32
val to_float : int32 -> float
val of_string : string -> int32
val of_string_opt : string -> int32 option
val to_string : int32 -> string
val bits_of_float : float -> int32
val float_of_bits : int32 -> float
type t = int32
val compare : t -> t -> int
val equal : t -> t -> bool
val format : string -> int32 -> string
val (+) : t -> t -> t

Addition.

val (-) : t -> t -> t

Subtraction.

val (~-) : t -> t

Unary negation.

val (*) : t -> t -> t

Multiplication.

val (/) : t -> t -> t

Integer division. Raise Division_by_zero if the second argument is zero. This division rounds the real quotient of its arguments towards zero, as specified for Pervasives.(/).

val (mod) : t -> t -> t

x mod y is the integer remainder. If y <> zero, the result of x mod y satisfies the following property: x = ((x / y) * y) + (x mod y). If y = 0, x mod y raises Division_by_zero.

val (land) : t -> t -> t

Bitwise logical and.

val (lor) : t -> t -> t

Bitwise logical or.

val (lxor) : t -> t -> t

Bitwise logical exclusive or.

val (lnot) : t -> t

Bitwise logical negation.

val (lsl) : t -> int -> t

x lsl y shifts x to the left by y bits, filling in with zeroes. The result is unspecified if y < 0 or y >= 32.

val (lsr) : t -> int -> t

x lsr y shifts x to the right by y bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of x. The result is unspecified if y < 0 or y >= 32.

val (asr) : t -> int -> t

x asr y shifts x to the right by y bits. This is an arithmetic shift: the sign bit of x is replicated and inserted in the vacated bits. The result is unspecified if y < 0 or y >= 32.

module Infix : sig ... end
include module type of Infix
val (+) : t -> t -> t
val (-) : t -> t -> t
val (~-) : t -> t
val (*) : t -> t -> t
val (/) : t -> t -> t
val (mod) : t -> t -> t
val (land) : t -> t -> t
val (lor) : t -> t -> t
val (lxor) : t -> t -> t
val (lnot) : t -> t
val (lsl) : t -> int -> t
val (lsr) : t -> int -> t
val (asr) : t -> int -> t
val (=) : t -> t -> bool
val (<>) : t -> t -> bool
val (>) : t -> t -> bool
val (>=) : t -> t -> bool
val (<=) : t -> t -> bool
val (<) : t -> t -> bool
val equal : t -> t -> bool

The equal function for 32-bit integers. Like Pervasives.(=) x y).

val hash : t -> int

Like Pervasives.abs (to_int x).

Conversion

val to_int : t -> int

Convert the given 32-bit integer (type int32) to an integer (type int). On 32-bit platforms, the 32-bit integer is taken modulo 231, i.e. the high-order bit is lost during the conversion. On 64-bit platforms, the conversion is exact.

val of_int : int -> t

Alias to Int32.of_int.

val to_float : t -> float

Convert the given 32-bit integer to a floating-point number.

val of_float : float -> t

Alias to Int32.of_float. Convert the given floating-point number to a 32-bit integer, discarding the fractional part (truncate towards 0). The result of the conversion is undefined if, after truncation, the number is outside the range [CCInt32.min_int, CCInt32.max_int].

val to_string : t -> string

Return the string representation of its argument, in signed decimal.

val of_string_exn : string -> t

Alias to Int32.of_string. Convert the given string to a 32-bit integer. The string is read in decimal (by default, or if the string begins with 0u) or in hexadecimal, octal or binary if the string begins with 0x, 0o or 0b respectively.

The 0u prefix reads the input as an unsigned integer in the range [0, 2*CCInt32.max_int+1]. If the input exceeds CCInt32.max_int it is converted to the signed integer CCInt32.min_int + input - CCInt32.max_int - 1.

The _ (underscore) character can appear anywhere in the string and is ignored. Raise Failure "Int32.of_string" if the given string is not a valid representation of an integer, or if the integer represented exceeds the range of integers representable in type int32.

val of_string : string -> t option

Safe version of of_string_exn. Like of_string_exn, but return None instead of raising.

val of_string_opt : string -> t option

Alias to of_string.

\ No newline at end of file diff --git a/dev/containers/CCInt64.odoc b/dev/containers/CCInt64.odoc deleted file mode 100644 index 2e6334705c4a4f7b0ace515a665169a52d370dab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8822 zcmcIq32+g}~6J{E2+XjwH*Lah#A4g#<`Cgk(rU3k;|$X=QJacE#>0 zv6-Pm2k1}+${I)@rG+I8=g<-YGqk0Jlp_=hEdzxfKw+Si4x|H=qc9ZO@BiPwI*c8T z(wR7scfWVP|GoD=#VT0&L|?K$nL2;V4fnLPv~=M|#m_AK9I&$|Z<(%Un7Zv;*R_24 zD$^Yt$fP#jp1FUFHmhmrdPbK@(8D)RpPb^=)+A^)O zWmiUwyq9`s?atn-*Zh3!Vf)yJ{(Q}E@Av(oC(09cS5P%{@kQjJ)He#(r|~ z%)8dzcIJvBURZzfLs!o5eNw?oy}2iRd-BHUj??bZmcKds=5gQeS*zQdK(|Q;;nm9C zXRmzufcTt&*k!Mu{ip32Z|8tx=X>*(t@lb-B_Xw~w|B%U>%ERqw#?qmmVKsE(egTQ zfoFTOxvEhr^cM7@RxP=y#4W7-wVU3%W9;dZ%l1`|M3!Ydf7@=Q&+{{x@his1{Vh9h zRgP*uTemGwnX$w3wsyca1V+3#E^3*&r_9E4Wd=Q3(_J>qs*@Ejj^Hn5W&EwXZ&kh# zHT7XniS5ephhG(c&&~Kf#4n4Ngd2`(g@UInAY39t|Mm$y#0GeP2!D3espdT8YlO>4 z{0f0TzK#co@Rvl()sm;2PWW{a|8;>swT=gf@P4#lZ1R)};foT#QQ*sUJV1oMBWmkq zPdSh9V-kOkz@J;kmo4beox7*qspj*ZvXuxf7QjpC-IMJVTZc1#MDMnVcR!$aFGRJR z<0(7o)eYj+&GhOYU1e=Fi#U18FS)aK(c^c!5E^>Chd;iX6#h?V$r{#7i1{7ydQj^8 zu;BS#(-z~#x*^;7zOBv-P?-0prlH_$k^3S>y zfP}tkXo%C8mg}jZ=|uDq2dklwWO{6mGh!6oY)LP2&>;e(hGr1!tx>pu2#|w8;*=Z; ztQtCXK2h7o@CYaGk>pHjb_mgS)oC>+FsGbupv^)}Bd?XfV~OOEmONs_V^N()sm9~n zPOB)wp@!Cyc?$@=D&r>t{|SUN_tH++k_1^PX9K5D8VCp>39gAjLa}6N+&oi|Z0!)g zlOQAGr}HRRoax{|HURraP4X~XHFMUe9%R7nF-Qtne_Lv^S!gr6nQMS+;u<`h!1X?^ zFqBF6L*dJ$!s2&Q_>zp@+vJ&azclqpu1`Qo=S2MHq2pAK0)$3 z=>Z9UEaML}$3wp5laa-GSmL;o8_<~N%5@`OwZXoP=#8VBg5tdz) z@%tK_L};kBObwqwq1_gZ&F{vv;&m@86bv55r0j3dafh;|QAcIERPnZGEFp;E>#8}| z*7A*X%4|t_guTlepXp}z}L2Ln?v z6=1k6=yo!)st7|n#@G^;^1XR+{L(ebK)}X)FUD-{31@Ow)CFHC1vkzMYU`jF3Xm~v zJtygI)i#9_Feq51s;je2TB)kT3#`!#HCuitZ1ANG$Jd4k&Mv+l?jMFXUEOh+tz#~6 z;887C(kINzan|qeI1Y9Vrs1hBmSBA_)E{5CFx%gs&ZZaiXH)6H?9h<|*#!%Z%nqd% zkUw#L_(Z~MT5GO0sc_i|F54+^m^YGN1JL-EWoF0*0eEMR!G5#0{+_sqIkX~_CG)lM!4dWigHXH7UIAgk#jPPh8 zdr&y|`K_AuBZpHi&c$MWF4|!ye(f4#M=wE&H5@uMBrBg9zLE4kS?c{E*IW3HpD28s zMD4ynZ87#W=$#XKbN!$e{%Ezh3$qtV15iD5*yQN8iz)%*cwyS4p#b7nZh6E;@w5v_ zR)-%o{@O8yP5zl2xAY6~!38q%;pfN)7n2W^bVm$hs)!wYfRCTW2Lls*V8UDkudKU9 zo=HE{EP}OltJ+TFPD5o7%|J($Ho1GI_R|;Qg}bE}S`Q{K+=rU;#&%UPaI-ENqr7?c zicieK{a$k|ai5R&C;Kw;a(jSivZ}IDG-);TOmL!}Cyp-)zbbP@TUC`)By4X0dxKza z5v-p&sj6(0I6C5CI^xPw(KuCQGrh%(BR|X(T*3zum$jl%s>+4(?Uw`C5d@n@Fio}@ zRoNzi@c@`2AWAU5W7RNPYi%35pV+muLx?Dsyr%@ z*#Ma*WRZ~92c<|=o|DK50UQGClGR34UX}09k(^qeBH;N1yk8z~Rrx>yzZU@iM!+ou z{JlH_s`@1fyfy&-i-0!}@a1T1Nw=q}b0lnMV8WdQdxl`|w#OD9&2dSI`&EE@kZ^ki zP7O_q#sqGu#61z}VmFE`DnGr2zPf0JhGQz-~wuKuvOdI{>~%KslL) z7DZ!=xrR33T2+Z_Z6jO?6ECJ;VyoUM=h#|%6=N+cR!uQ3PPPV1Mouu!#Dq3+B#Oa< z=n-R0bCKHG5y-*Cu{RImwf_n1~h;hj%DssfjG4hQGK*BiYkq2GlYGLv7=Cxqowm-=F2bPpnb=+QK_jTJ4n`^LCmMA%{#Hr z7u~kCGQ6~0!!#*s$p3z1MSOcFuRIZ6dFu6nR}Xy@$E9{Ul(Xrq4oOqno0o`F2Db_J ze+lqfiosPlxVD$vcaSG4H+7(Cc2j;Tg=Fh{U>@YfpV%RIJ78j0hhm(lSO_XJ ztK}RPBSD!^_K=5vEoD@A3JQ{`t4|HWJ^NHL@^L*Tl_|Q@gt8Ei6bvViD_qbmigJsF zRT4IZE_#@aK?xT=P}BY>)!lTPk=MTFEW%DoFXHP>+=`0WH5KsIaN{EH$Pql} ztg7o61xP?P+L}46v(r%iy<0qW+INEO2u$VMBl*}17B<`inbRAp$ER%yllFqQDXHF* zvAC9Jig4w=6RI&DQzp}XvnbGqN#^%9tfhH2EooR{(YCr_^~4vB6L(qY!X_(Vg@WTyKHuP| zE9JN}?ezv4zKsX}rfw-1f1s-G6F2{IaTTSRU8TFCx|etwf~PX@F&^8mlQTfw4sdH5 zoh<34*TkV~Zhn-o@;wp`yFIbakltf4Y;@$e#Bsig30AP;tBOcYAI9CDrfGkCUaATO zmUauA$wp8xB^!|DU7Q;*$Qfd_Onf3z@I*e?D~W~Zyc8C{as@OmmGiwM6yy^>|E{Jq zmh@q9JMZX$@Wl)(N!<8_9W<;PW(8vppT|wUX2K4JpFKH;%EgU1S`mMI=rmjc`g>~M zrPKGP^ZQQsy#+~zg)Kja#1M-(UB}K?p1bKMG@iRIESUN6rK8VRLU28&Z59uSZTPPQ ztN7P$N%^fTn=b_eXuMFNtmI*_R;lQk z4co^ykLY4$MS4*D#Bv5}E_}U;Zfx!(w#_{VXL F`7guf`g8yQ diff --git a/dev/containers.sexp/CCSexp/.jbuilder-keep b/dev/containers/CCInt64/.dune-keep similarity index 100% rename from dev/containers.sexp/CCSexp/.jbuilder-keep rename to dev/containers/CCInt64/.dune-keep diff --git a/dev/containers/CCInt64/Infix/index.html b/dev/containers/CCInt64/Infix/index.html index 340f3719..72387a90 100644 --- a/dev/containers/CCInt64/Infix/index.html +++ b/dev/containers/CCInt64/Infix/index.html @@ -1,2 +1,2 @@ -Infix (containers.CCInt64.Infix)

Module CCInt64.Infix

Infix operators

since
2.1
val (+) : t -> t -> t
val (-) : t -> t -> t
val (~-) : t -> t
val (*) : t -> t -> t
val (/) : t -> t -> t
val (mod) : t -> t -> t
val (land) : t -> t -> t
val (lor) : t -> t -> t
val (lxor) : t -> t -> t
val (lnot) : t -> t
val (lsl) : t -> int -> t
val (lsr) : t -> int -> t
val (asr) : t -> int -> t
val (=) : t -> t -> bool
val (<>) : t -> t -> bool
val (>) : t -> t -> bool
val (>=) : t -> t -> bool
val (<=) : t -> t -> bool
val (<) : t -> t -> bool
\ No newline at end of file +Infix (containers.CCInt64.Infix)

Module CCInt64.Infix

Infix operators

since
2.1
val (+) : t -> t -> t
val (-) : t -> t -> t
val (~-) : t -> t
val (*) : t -> t -> t
val (/) : t -> t -> t
val (mod) : t -> t -> t
val (land) : t -> t -> t
val (lor) : t -> t -> t
val (lxor) : t -> t -> t
val (lnot) : t -> t
val (lsl) : t -> int -> t
val (lsr) : t -> int -> t
val (asr) : t -> int -> t
val (=) : t -> t -> bool
val (<>) : t -> t -> bool
val (>) : t -> t -> bool
val (>=) : t -> t -> bool
val (<=) : t -> t -> bool
val (<) : t -> t -> bool
\ No newline at end of file diff --git a/dev/containers/CCInt64/index.html b/dev/containers/CCInt64/index.html index 43106ad6..be4ee258 100644 --- a/dev/containers/CCInt64/index.html +++ b/dev/containers/CCInt64/index.html @@ -1,2 +1,2 @@ -CCInt64 (containers.CCInt64)

Module CCInt64

Int64

Helpers for 64-bit integers

since
0.13
include module type of sig ... end
val zero : int64
val one : int64
val minus_one : int64
val neg : int64 -> int64
val add : int64 -> int64 -> int64
val sub : int64 -> int64 -> int64
val mul : int64 -> int64 -> int64
val div : int64 -> int64 -> int64
val rem : int64 -> int64 -> int64
val succ : int64 -> int64
val pred : int64 -> int64
val abs : int64 -> int64
val max_int : int64
val min_int : int64
val logand : int64 -> int64 -> int64
val logor : int64 -> int64 -> int64
val logxor : int64 -> int64 -> int64
val lognot : int64 -> int64
val shift_left : int64 -> int -> int64
val shift_right : int64 -> int -> int64
val shift_right_logical : int64 -> int -> int64
val of_int : int -> int64
val to_int : int64 -> int
val of_float : float -> int64
val to_float : int64 -> float
val of_int32 : int32 -> int64
val to_int32 : int64 -> int32
val of_nativeint : nativeint -> int64
val to_nativeint : int64 -> nativeint
val of_string : string -> int64
val of_string_opt : string -> int64 option
val to_string : int64 -> string
val bits_of_float : float -> int64
val float_of_bits : int64 -> float
type t = int64
val compare : t -> t -> int
val equal : t -> t -> bool
val format : string -> int64 -> string
val (+) : t -> t -> t

Addition.

val (-) : t -> t -> t

Subtraction.

val (~-) : t -> t

Unary negation.

val (*) : t -> t -> t

Multiplication.

val (/) : t -> t -> t

Integer division. Raise Division_by_zero if the second argument is zero. This division rounds the real quotient of its arguments towards zero, as specified for Pervasives.(/).

val (mod) : t -> t -> t

Integer remainder. If y = 0, x mod y raises Division_by_zero.

val abs : t -> t

Return the absolute value of its argument.

val max_int : t

The greatest representable 64-bit integer, 263 - 1 = 9_223_372_036_854_775_807.

val min_int : t

The smallest representable 64-bit integer, -263 = -9_223_372_036_854_775_808.

val (land) : t -> t -> t

Bitwise logical and.

val (lor) : t -> t -> t

Bitwise logical or.

val (lxor) : t -> t -> t

Bitwise logical exclusive or.

val (lnot) : t -> t

Bitwise logical negation.

val (lsl) : t -> int -> t

x lsl y shifts x to the left by y bits, filling in with zeroes. The result is unspecified if y < 0 or y >= 64.

val (lsr) : t -> int -> t

x lsr y shifts x to the right by y bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of x. The result is unspecified if y < 0 or y >= 64.

val (asr) : t -> int -> t

x asr y shifts x to the right by y bits. This is an arithmetic shift: the sign bit of x is replicated and inserted in the vacated bits. The result is unspecified if y < 0 or y >= 64.

module Infix : sig ... end

Infix operators

include module type of Infix
val (+) : t -> t -> t
val (-) : t -> t -> t
val (~-) : t -> t
val (*) : t -> t -> t
val (/) : t -> t -> t
val (mod) : t -> t -> t
val (land) : t -> t -> t
val (lor) : t -> t -> t
val (lxor) : t -> t -> t
val (lnot) : t -> t
val (lsl) : t -> int -> t
val (lsr) : t -> int -> t
val (asr) : t -> int -> t
val (=) : t -> t -> bool
val (<>) : t -> t -> bool
val (>) : t -> t -> bool
val (>=) : t -> t -> bool
val (<=) : t -> t -> bool
val (<) : t -> t -> bool
val equal : t -> t -> bool

The equal function for 64-bit integers. Like Pervasives.(=) x y).

val compare : t -> t -> int

The comparison function for 64-bit integers, with the same specification as Pervasives.compare. Along with the type t, this function compare allows the module CCInt64 to be passed as argument to the functors Set.Make and Map.Make.

val hash : t -> int

Like Pervasives.abs (to_int x).

Conversion

val to_int : t -> int

Convert the given 64-bit integer (type int64) to an integer (type int). On 64-bit platforms, the 64-bit integer is taken modulo 263, i.e. the high-order bit is lost during the conversion. On 32-bit platforms, the 64-bit integer is taken modulo 231, i.e. the top 33 bits are lost during the conversion.

val of_int : int -> t

Alias to Int64.of_int. NOTE: used to return an option, but the function actually never fails.

val of_int_exn : int -> t

Alias to Int64.of_int.

deprecated

since 2.1, use Int64.of_int instead.

val to_int32 : t -> int32

Convert the given 64-bit integer (type int64) to a 32-bit integer (type int32). The 64-bit integer is taken modulo 232, i.e. the top 32 bits are lost during the conversion.

val of_int32 : int32 -> t

Alias to Int64.of_int32. NOTE: use to return an option, but the function actually never fails.

val of_int32_exn : int32 -> t

Alias to Int64.of_int32.

deprecated

since 2.1, use Int64.of_int32 instead.

val to_nativeint : t -> nativeint

Convert the given 64-bit integer (type int64) to a native integer. On 32-bit platforms, the 64-bit integer is taken modulo 232. On 64-bit platforms, the conversion is exact.

val of_nativeint : nativeint -> t

Alias to Int64.of_nativeint. NOTE: use to return an option, but the function actually never fails.

val of_nativeint_exn : nativeint -> t

Alias to Int64.of_nativeint.

deprecated

since 2.1, use Int64.of_nativeint instead.

val to_float : t -> float

Convert the given 64-bit integer to a floating-point number.

val of_float : float -> t

Alias to Int64.of_float. Convert the given floating-point number to a 64-bit integer, discarding the fractional part (truncate towards 0). The result of the conversion is undefined if, after truncation, the number is outside the range [CCInt64.min_int, CCInt64.max_int]. NOTE: used to return an option, but the function never fails.

val of_float_exn : float -> t

Alias to Int64.of_float.

deprecated

since 2.1, use Int64.of_float instead.

val to_string : t -> string

Return the string representation of its argument, in decimal.

val of_string : string -> t option

Safe version of of_string_exn.

val of_string_opt : string -> t option

Alias to of_string.

since
2.1
val of_string_exn : string -> t

Alias to Int64.of_string. Convert the given string to a 64-bit integer. The string is read in decimal (by default, or if the string begins with 0u) or in hexadecimal, octal or binary if the string begins with 0x, 0o or 0b respectively.

The 0u prefix reads the input as an unsigned integer in the range [0, 2*CCInt64.max_int+1]. If the input exceeds CCInt64.max_int it is converted to the signed integer CCInt64.min_int + input - CCInt64.max_int - 1.

The _ (underscore) character can appear anywhere in the string and is ignored. Raise Failure "Int64.of_string" if the given string is not a valid representation of an integer, or if the integer represented exceeds the range of integers representable in type int64.

\ No newline at end of file +CCInt64 (containers.CCInt64)

Module CCInt64

Int64

Helpers for 64-bit integers

since
0.13
include module type of sig ... end
val zero : int64
val one : int64
val minus_one : int64
val neg : int64 -> int64
val add : int64 -> int64 -> int64
val sub : int64 -> int64 -> int64
val mul : int64 -> int64 -> int64
val div : int64 -> int64 -> int64
val rem : int64 -> int64 -> int64
val succ : int64 -> int64
val pred : int64 -> int64
val abs : int64 -> int64
val max_int : int64
val min_int : int64
val logand : int64 -> int64 -> int64
val logor : int64 -> int64 -> int64
val logxor : int64 -> int64 -> int64
val lognot : int64 -> int64
val shift_left : int64 -> int -> int64
val shift_right : int64 -> int -> int64
val shift_right_logical : int64 -> int -> int64
val of_int : int -> int64
val to_int : int64 -> int
val of_float : float -> int64
val to_float : int64 -> float
val of_int32 : int32 -> int64
val to_int32 : int64 -> int32
val of_nativeint : nativeint -> int64
val to_nativeint : int64 -> nativeint
val of_string : string -> int64
val of_string_opt : string -> int64 option
val to_string : int64 -> string
val bits_of_float : float -> int64
val float_of_bits : int64 -> float
type t = int64
val compare : t -> t -> int
val equal : t -> t -> bool
val format : string -> int64 -> string
val (+) : t -> t -> t

Addition.

val (-) : t -> t -> t

Subtraction.

val (~-) : t -> t

Unary negation.

val (*) : t -> t -> t

Multiplication.

val (/) : t -> t -> t

Integer division. Raise Division_by_zero if the second argument is zero. This division rounds the real quotient of its arguments towards zero, as specified for Pervasives.(/).

val (mod) : t -> t -> t

Integer remainder. If y = 0, x mod y raises Division_by_zero.

val abs : t -> t

Return the absolute value of its argument.

val max_int : t

The greatest representable 64-bit integer, 263 - 1 = 9_223_372_036_854_775_807.

val min_int : t

The smallest representable 64-bit integer, -263 = -9_223_372_036_854_775_808.

val (land) : t -> t -> t

Bitwise logical and.

val (lor) : t -> t -> t

Bitwise logical or.

val (lxor) : t -> t -> t

Bitwise logical exclusive or.

val (lnot) : t -> t

Bitwise logical negation.

val (lsl) : t -> int -> t

x lsl y shifts x to the left by y bits, filling in with zeroes. The result is unspecified if y < 0 or y >= 64.

val (lsr) : t -> int -> t

x lsr y shifts x to the right by y bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of x. The result is unspecified if y < 0 or y >= 64.

val (asr) : t -> int -> t

x asr y shifts x to the right by y bits. This is an arithmetic shift: the sign bit of x is replicated and inserted in the vacated bits. The result is unspecified if y < 0 or y >= 64.

module Infix : sig ... end

Infix operators

include module type of Infix
val (+) : t -> t -> t
val (-) : t -> t -> t
val (~-) : t -> t
val (*) : t -> t -> t
val (/) : t -> t -> t
val (mod) : t -> t -> t
val (land) : t -> t -> t
val (lor) : t -> t -> t
val (lxor) : t -> t -> t
val (lnot) : t -> t
val (lsl) : t -> int -> t
val (lsr) : t -> int -> t
val (asr) : t -> int -> t
val (=) : t -> t -> bool
val (<>) : t -> t -> bool
val (>) : t -> t -> bool
val (>=) : t -> t -> bool
val (<=) : t -> t -> bool
val (<) : t -> t -> bool
val equal : t -> t -> bool

The equal function for 64-bit integers. Like Pervasives.(=) x y).

val compare : t -> t -> int

The comparison function for 64-bit integers, with the same specification as Pervasives.compare. Along with the type t, this function compare allows the module CCInt64 to be passed as argument to the functors Set.Make and Map.Make.

val hash : t -> int

Like Pervasives.abs (to_int x).

Conversion

val to_int : t -> int

Convert the given 64-bit integer (type int64) to an integer (type int). On 64-bit platforms, the 64-bit integer is taken modulo 263, i.e. the high-order bit is lost during the conversion. On 32-bit platforms, the 64-bit integer is taken modulo 231, i.e. the top 33 bits are lost during the conversion.

val of_int : int -> t

Alias to Int64.of_int. NOTE: used to return an option, but the function actually never fails.

val of_int_exn : int -> t

Alias to Int64.of_int.

deprecated

since 2.1, use Int64.of_int instead.

val to_int32 : t -> int32

Convert the given 64-bit integer (type int64) to a 32-bit integer (type int32). The 64-bit integer is taken modulo 232, i.e. the top 32 bits are lost during the conversion.

val of_int32 : int32 -> t

Alias to Int64.of_int32. NOTE: use to return an option, but the function actually never fails.

val of_int32_exn : int32 -> t

Alias to Int64.of_int32.

deprecated

since 2.1, use Int64.of_int32 instead.

val to_nativeint : t -> nativeint

Convert the given 64-bit integer (type int64) to a native integer. On 32-bit platforms, the 64-bit integer is taken modulo 232. On 64-bit platforms, the conversion is exact.

val of_nativeint : nativeint -> t

Alias to Int64.of_nativeint. NOTE: use to return an option, but the function actually never fails.

val of_nativeint_exn : nativeint -> t

Alias to Int64.of_nativeint.

deprecated

since 2.1, use Int64.of_nativeint instead.

val to_float : t -> float

Convert the given 64-bit integer to a floating-point number.

val of_float : float -> t

Alias to Int64.of_float. Convert the given floating-point number to a 64-bit integer, discarding the fractional part (truncate towards 0). The result of the conversion is undefined if, after truncation, the number is outside the range [CCInt64.min_int, CCInt64.max_int]. NOTE: used to return an option, but the function never fails.

val of_float_exn : float -> t

Alias to Int64.of_float.

deprecated

since 2.1, use Int64.of_float instead.

val to_string : t -> string

Return the string representation of its argument, in decimal.

val of_string : string -> t option

Safe version of of_string_exn.

val of_string_opt : string -> t option

Alias to of_string.

since
2.1
val of_string_exn : string -> t

Alias to Int64.of_string. Convert the given string to a 64-bit integer. The string is read in decimal (by default, or if the string begins with 0u) or in hexadecimal, octal or binary if the string begins with 0x, 0o or 0b respectively.

The 0u prefix reads the input as an unsigned integer in the range [0, 2*CCInt64.max_int+1]. If the input exceeds CCInt64.max_int it is converted to the signed integer CCInt64.min_int + input - CCInt64.max_int - 1.

The _ (underscore) character can appear anywhere in the string and is ignored. Raise Failure "Int64.of_string" if the given string is not a valid representation of an integer, or if the integer represented exceeds the range of integers representable in type int64.

\ No newline at end of file diff --git a/dev/containers.sexp/CCSexp_lex/.jbuilder-keep b/dev/containers/CCIntMap/.dune-keep similarity index 100% rename from dev/containers.sexp/CCSexp_lex/.jbuilder-keep rename to dev/containers/CCIntMap/.dune-keep diff --git a/dev/containers/CCIntMap/index.html b/dev/containers/CCIntMap/index.html new file mode 100644 index 00000000..d47169c5 --- /dev/null +++ b/dev/containers/CCIntMap/index.html @@ -0,0 +1,2 @@ + +CCIntMap (containers.CCIntMap)

Module CCIntMap

Map specialized for Int keys

status: stable

since
0.10
type +'a t
val empty : 'a t
val is_empty : _ t -> bool

Is the map empty?

since
2.3
val singleton : int -> 'a -> 'a t
val doubleton : int -> 'a -> int -> 'a -> 'a t
val mem : int -> _ t -> bool
val find : int -> 'a t -> 'a option
val find_exn : int -> 'a t -> 'a

Same as find but unsafe.

raises Not_found

if key is not present.

val add : int -> 'a -> 'a t -> 'a t
val remove : int -> 'a t -> 'a t
val equal : eq:('a -> 'a -> bool) -> 'a t -> 'a t -> bool

equal ~eq a b checks whether a and b have the same set of pairs (key, value), comparing values with eq.

since
0.13
val compare : cmp:('a -> 'a -> int) -> 'a t -> 'a t -> int

Total order between maps; the precise order is unspecified.

since
0.13
val update : int -> ('a option -> 'a option) -> 'a t -> 'a t
val filter : (int -> 'a -> bool) -> 'a t -> 'a t

Filter values using the given predicate

since
2.3
val filter_map : (int -> 'a -> 'b option) -> 'a t -> 'b t

Filter-map values using the given function

since
2.3
val cardinal : _ t -> int

Number of bindings in the map. Linear time.

val iter : (int -> 'a -> unit) -> 'a t -> unit
val fold : (int -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val mapi : (int -> 'a -> 'b) -> 'a t -> 'b t
since
0.17
val map : ('a -> 'b) -> 'a t -> 'b t
since
0.17
val choose : 'a t -> (int * 'a) option
val choose_exn : 'a t -> int * 'a
raises Not_found

if not pair was found.

val union : (int -> 'a -> 'a -> 'a) -> 'a t -> 'a t -> 'a t
val inter : (int -> 'a -> 'a -> 'a) -> 'a t -> 'a t -> 'a t
val merge : f:(int -> [ `Left of 'a | `Right of 'b | `Both of 'a * 'b ] -> 'c option) -> 'a t -> 'b t -> 'c t

merge ~f m1 m2 merges m1 and m2 together, calling f once on every key that occurs in at least one of m1 and m2. if f k binding = Some c then k -> c is part of the result, else k is not part of the result.

since
2.3

Whole-collection operations

type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
val add_list : 'a t -> (int * 'a) list -> 'a t
val of_list : (int * 'a) list -> 'a t
val to_list : 'a t -> (int * 'a) list
val add_seq : 'a t -> (int * 'a) sequence -> 'a t
val of_seq : (int * 'a) sequence -> 'a t
val to_seq : 'a t -> (int * 'a) sequence
val keys : _ t -> int sequence
val values : 'a t -> 'a sequence
val add_gen : 'a t -> (int * 'a) gen -> 'a t
since
0.13
val of_gen : (int * 'a) gen -> 'a t
since
0.13
val to_gen : 'a t -> (int * 'a) gen
since
0.13
val add_klist : 'a t -> (int * 'a) klist -> 'a t
since
0.13
val of_klist : (int * 'a) klist -> 'a t
since
0.13
val to_klist : 'a t -> (int * 'a) klist
since
0.13
type 'a tree = unit -> [ `Nil | `Node of 'a * 'a tree list ]
val as_tree : 'a t -> [ `Node of int * int | `Leaf of int * 'a ] tree

IO

type 'a printer = Format.formatter -> 'a -> unit
val pp : 'a printer -> 'a t printer
since
0.13
\ No newline at end of file diff --git a/dev/containers.thread/CCBlockingQueue/.jbuilder-keep b/dev/containers/CCKList/.dune-keep similarity index 100% rename from dev/containers.thread/CCBlockingQueue/.jbuilder-keep rename to dev/containers/CCKList/.dune-keep diff --git a/dev/containers/CCKList/Infix/index.html b/dev/containers/CCKList/Infix/index.html new file mode 100644 index 00000000..e334a5fe --- /dev/null +++ b/dev/containers/CCKList/Infix/index.html @@ -0,0 +1,2 @@ + +Infix (containers.CCKList.Infix)

Module CCKList.Infix

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
val (>|=) : 'a t -> ('a -> 'b) -> 'b t
val (<*>) : ('a -> 'b) t -> 'a t -> 'b t
val (>>-) : 'a t -> ('a -> 'b t) -> 'b t
val (<.>) : ('a -> 'b) t -> 'a t -> 'b t
val (--) : int -> int -> int t
val (--^) : int -> int -> int t
\ No newline at end of file diff --git a/dev/containers/CCKList/Traverse/argument-1-M/index.html b/dev/containers/CCKList/Traverse/argument-1-M/index.html new file mode 100644 index 00000000..6c0b4ee7 --- /dev/null +++ b/dev/containers/CCKList/Traverse/argument-1-M/index.html @@ -0,0 +1,2 @@ + +1-M (containers.CCKList.Traverse.1-M)

Parameter Traverse.1-M

type 'a t
val return : 'a -> 'a t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
\ No newline at end of file diff --git a/dev/containers/CCKList/Traverse/index.html b/dev/containers/CCKList/Traverse/index.html new file mode 100644 index 00000000..dabb6389 --- /dev/null +++ b/dev/containers/CCKList/Traverse/index.html @@ -0,0 +1,2 @@ + +Traverse (containers.CCKList.Traverse)

Module CCKList.Traverse

Parameters

Signature

val sequence_m : 'a M.t t -> 'a t M.t
val fold_m : ('b -> 'a -> 'b M.t) -> 'b -> 'a t -> 'b M.t
val map_m : ('a -> 'b M.t) -> 'a t -> 'b t M.t
\ No newline at end of file diff --git a/dev/containers/CCKList/index.html b/dev/containers/CCKList/index.html new file mode 100644 index 00000000..d774ee65 --- /dev/null +++ b/dev/containers/CCKList/index.html @@ -0,0 +1,2 @@ + +CCKList (containers.CCKList)

Module CCKList

Continuation List

type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
type 'a equal = 'a -> 'a -> bool
type 'a ord = 'a -> 'a -> int
type 'a printer = Format.formatter -> 'a -> unit

Basics

type +'a t = unit -> [ `Nil | `Cons of 'a * 'a t ]
val nil : 'a t
val empty : 'a t
val cons : 'a -> 'a t -> 'a t
val singleton : 'a -> 'a t
val repeat : ?⁠n:int -> 'a -> 'a t

repeat ~n x repeats x n times then stops. If n is omitted, then x is repeated forever.

since
0.3.3
val cycle : 'a t -> 'a t

Cycle through the iterator infinitely. The iterator shouldn't be empty.

since
0.3.3
val unfold : ('b -> ('a * 'b) option) -> 'b -> 'a t

unfold f acc calls f acc and:

  • if f acc = Some (x, acc'), yield x, continue with unfold f acc'.
  • if f acc = None, stops.
since
0.13
val is_empty : 'a t -> bool
val head : 'a t -> 'a option

Head of the list.

since
0.13
val head_exn : 'a t -> 'a

Unsafe version of head.

raises Not_found

if the list is empty.

since
0.13
val tail : 'a t -> 'a t option

Tail of the list.

since
0.13
val tail_exn : 'a t -> 'a t

Unsafe version of tail.

raises Not_found

if the list is empty.

since
0.13
val equal : 'a equal -> 'a t equal

Equality step by step. Eager.

val compare : 'a ord -> 'a t ord

Lexicographic comparison. Eager.

val fold : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a

Fold on values.

val iter : ('a -> unit) -> 'a t -> unit
val iteri : (int -> 'a -> unit) -> 'a t -> unit

Iterate with index (starts at 0).

since
0.13
val length : _ t -> int

Number of elements in the list. Will not terminate if the list if infinite: use (for instance) take to make the list finite if necessary.

val take : int -> 'a t -> 'a t
val take_while : ('a -> bool) -> 'a t -> 'a t
val drop : int -> 'a t -> 'a t
val drop_while : ('a -> bool) -> 'a t -> 'a t
val map : ('a -> 'b) -> 'a t -> 'b t
val mapi : (int -> 'a -> 'b) -> 'a t -> 'b t

Map with index (starts at 0).

since
0.13
val fmap : ('a -> 'b option) -> 'a t -> 'b t
val filter : ('a -> bool) -> 'a t -> 'a t
val append : 'a t -> 'a t -> 'a t
val product_with : ('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t

Fair product of two (possibly infinite) lists into a new list. Lazy. The first parameter is used to combine each pair of elements.

since
0.3.3
val product : 'a t -> 'b t -> ('a * 'b) t

Specialization of product_with producing tuples.

since
0.3.3
val group : 'a equal -> 'a t -> 'a t t

group eq l groups together consecutive elements that satisfy eq. Lazy. For instance group (=) [1;1;1;2;2;3;3;1] yields [1;1;1]; [2;2]; [3;3]; [1].

since
0.3.3
val uniq : 'a equal -> 'a t -> 'a t

uniq eq l returns l but removes consecutive duplicates. Lazy. In other words, if several values that are equal follow one another, only the first of them is kept.

since
0.3.3
val flat_map : ('a -> 'b t) -> 'a t -> 'b t
val filter_map : ('a -> 'b option) -> 'a t -> 'b t
val flatten : 'a t t -> 'a t
val range : int -> int -> int t
val (--) : int -> int -> int t

a -- b is the range of integers containing a and b (therefore, never empty).

val (--^) : int -> int -> int t

a -- b is the integer range from a to b, where b is excluded.

since
0.17

Operations on two Collections

val fold2 : ('acc -> 'a -> 'b -> 'acc) -> 'acc -> 'a t -> 'b t -> 'acc

Fold on two collections at once. Stop at soon as one of them ends.

val map2 : ('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t

Map on two collections at once. Stop as soon as one of the arguments is exhausted.

val iter2 : ('a -> 'b -> unit) -> 'a t -> 'b t -> unit

Iterate on two collections at once. Stop as soon as one of them ends.

val for_all2 : ('a -> 'b -> bool) -> 'a t -> 'b t -> bool
val exists2 : ('a -> 'b -> bool) -> 'a t -> 'b t -> bool
val merge : 'a ord -> 'a t -> 'a t -> 'a t

Merge two sorted iterators into a sorted iterator.

val zip : 'a t -> 'b t -> ('a * 'b) t

Combine elements pairwise. Stop as soon as one of the lists stops.

since
0.13
val unzip : ('a * 'b) t -> 'a t * 'b t

Split each tuple in the list.

since
0.13

Misc

val sort : cmp:'a ord -> 'a t -> 'a t

Eager sort. Require the iterator to be finite. O(n ln(n)) time and space.

since
0.3.3
val sort_uniq : cmp:'a ord -> 'a t -> 'a t

Eager sort that removes duplicate values. Require the iterator to be finite. O(n ln(n)) time and space.

since
0.3.3
val memoize : 'a t -> 'a t

Avoid recomputations by caching intermediate results.

since
0.14

Fair Combinations

val interleave : 'a t -> 'a t -> 'a t

Fair interleaving of both streams.

since
0.13
val fair_flat_map : ('a -> 'b t) -> 'a t -> 'b t

Fair version of flat_map.

since
0.13
val fair_app : ('a -> 'b) t -> 'a t -> 'b t

Fair version of (<*>).

since
0.13

Implementations

since
0.3.3
val return : 'a -> 'a t
val pure : 'a -> 'a t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
val (>|=) : 'a t -> ('a -> 'b) -> 'b t
val (<*>) : ('a -> 'b) t -> 'a t -> 'b t
val (>>-) : 'a t -> ('a -> 'b t) -> 'b t

Infix version of fair_flat_map.

since
0.13
val (<.>) : ('a -> 'b) t -> 'a t -> 'b t

Infix version of fair_app.

since
0.13

Infix operators

since
0.17
module Infix : sig ... end
module type MONAD = sig ... end
module Traverse : functor (M : MONAD) -> sig ... end

Conversions

val of_list : 'a list -> 'a t
val to_list : 'a t -> 'a list

Gather all values into a list.

val of_array : 'a array -> 'a t

Iterate on the array.

since
0.13
val to_array : 'a t -> 'a array

Convert into array. Iterate twice.

since
0.13
val to_rev_list : 'a t -> 'a list

Convert to a list, in reverse order. More efficient than to_list.

val to_seq : 'a t -> 'a sequence
val to_gen : 'a t -> 'a gen
val of_gen : 'a gen -> 'a t

of_gen g consumes the generator and caches intermediate results.

since
0.13

IO

val pp : ?⁠sep:string -> 'a printer -> 'a t printer

Print the list with the given separator (default ","). Do not print opening/closing delimiters.

\ No newline at end of file diff --git a/dev/containers/CCKList/module-type-MONAD/index.html b/dev/containers/CCKList/module-type-MONAD/index.html new file mode 100644 index 00000000..259f9465 --- /dev/null +++ b/dev/containers/CCKList/module-type-MONAD/index.html @@ -0,0 +1,2 @@ + +MONAD (containers.CCKList.MONAD)

Module type CCKList.MONAD

Monadic Operations

type 'a t
val return : 'a -> 'a t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
\ No newline at end of file diff --git a/dev/containers.thread/CCLock/.jbuilder-keep b/dev/containers/CCKTree/.dune-keep similarity index 100% rename from dev/containers.thread/CCLock/.jbuilder-keep rename to dev/containers/CCKTree/.dune-keep diff --git a/dev/containers/CCKTree/Dot/index.html b/dev/containers/CCKTree/Dot/index.html new file mode 100644 index 00000000..db9d2557 --- /dev/null +++ b/dev/containers/CCKTree/Dot/index.html @@ -0,0 +1,2 @@ + +Dot (containers.CCKTree.Dot)

Module CCKTree.Dot

type attribute = [
| `Color of string
| `Shape of string
| `Weight of int
| `Style of string
| `Label of string
| `Id of string

Unique ID in the graph. Allows sharing.

| `Other of string * string
]

Dot attributes for nodes

type graph = string * attribute list t list

A dot graph is a name, plus a list of trees labelled with attributes

val mk_id : ('a, Buffer.t, unit, attribute) Pervasives.format4 -> 'a

Using a formatter string, build an ID.

val mk_label : ('a, Buffer.t, unit, attribute) Pervasives.format4 -> 'a

Using a formatter string, build a label.

val make : name:string -> attribute list t list -> graph
val singleton : name:string -> attribute list t -> graph
val pp_single : string -> attribute list t printer
val pp : graph printer

Printer to DOT with indentation, etc.

since
0.6.1
val print_to_file : string -> graph -> unit

print_to_file filename g prints g into a file whose name is filename.

since
0.6.1
val to_file : ?⁠name:string -> string -> attribute list t list -> unit

to_file filename trees makes a graph out of the trees, opens the file filename and prints the graph into the file.

parameter name

name of the graph.

since
0.6.1
\ No newline at end of file diff --git a/dev/containers/CCKTree/class-type-pset/index.html b/dev/containers/CCKTree/class-type-pset/index.html new file mode 100644 index 00000000..e3f2e55d --- /dev/null +++ b/dev/containers/CCKTree/class-type-pset/index.html @@ -0,0 +1,2 @@ + +pset (containers.CCKTree.pset)

Class type CCKTree.pset

Abstract Set structure

method add : 'a -> 'a pset
method mem : 'a -> bool
\ No newline at end of file diff --git a/dev/containers/CCKTree/index.html b/dev/containers/CCKTree/index.html new file mode 100644 index 00000000..65f1a5c0 --- /dev/null +++ b/dev/containers/CCKTree/index.html @@ -0,0 +1,15 @@ + +CCKTree (containers.CCKTree)

Module CCKTree

Lazy Tree Structure

This structure can be used to represent trees and directed graphs (as infinite trees) in a lazy fashion. Like CCKList, it is a structural type.

type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a printer = Format.formatter -> 'a -> unit

Basics

type +'a t = unit -> [ `Nil | `Node of 'a * 'a t list ]
val empty : 'a t
val is_empty : _ t -> bool
val singleton : 'a -> 'a t

Tree with only one label.

val node : 'a -> 'a t list -> 'a t

Build a node from a label and a list of children.

val node1 : 'a -> 'a t -> 'a t

Node with one child.

val node2 : 'a -> 'a t -> 'a t -> 'a t

Node with two children.

val fold : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a

Fold on values in no specified order. May not terminate if the tree is infinite.

val iter : ('a -> unit) -> 'a t -> unit
val size : _ t -> int

Number of elements.

val height : _ t -> int

Length of the longest path to empty leaves.

val map : ('a -> 'b) -> 'a t -> 'b t
val (>|=) : 'a t -> ('a -> 'b) -> 'b t
val cut_depth : int -> 'a t -> 'a t

Cut the tree at the given depth, so it becomes finite.

Graph Traversals

class type 'a pset = object ... end

Abstract Set structure

val set_of_cmp : cmp:('a -> 'a -> int) -> unit -> 'a pset

Build a set structure given a total ordering.

val dfs : pset:'a pset -> 'a t -> [ `Enter of 'a | `Exit of 'a ] klist

Depth-first traversal of the tree.

val bfs : pset:'a pset -> 'a t -> 'a klist

Breadth-first traversal of the tree.

val force : 'a t -> [ `Nil | `Node of 'a * 'b list ] as b

force t evaluates t completely and returns a regular tree structure.

since
0.13
val find : pset:'a pset -> ('a -> 'b option) -> 'a t -> 'b option

Look for an element that maps to Some _.

Pretty-printing

Example (tree of calls for naive Fibonacci function):

let mk_fib n =
+  let rec fib' l r i =
+    if i=n then r else fib' r (l+r) (i+1)
+  in fib' 1 1 1;;
+
+let rec fib n = match n with
+  | 0 | 1 -> CCKTree.singleton (`Cst n)
+  | _ -> CCKTree.node2 (`Plus (mk_fib n)) (fib (n-1)) (fib (n-2));;
+
+let pp_node fmt = function
+  | `Cst n -> Format.fprintf fmt "%d" n
+  | `Plus n -> Format.fprintf fmt "%d" n;;
+
+Format.printf "%a@." (CCKTree.pp pp_node) (fib 8);;
val pp : 'a printer -> 'a t printer

A pretty-printer using S-expressions and boxes to render the tree. Empty nodes are not rendered; sharing is ignored.

since
0.9

Pretty printing in the DOT (graphviz) format

module Dot : sig ... end
\ No newline at end of file diff --git a/dev/containers.thread/CCPool/.jbuilder-keep b/dev/containers/CCLazy_list/.dune-keep similarity index 100% rename from dev/containers.thread/CCPool/.jbuilder-keep rename to dev/containers/CCLazy_list/.dune-keep diff --git a/dev/containers/CCLazy_list/Infix/index.html b/dev/containers/CCLazy_list/Infix/index.html new file mode 100644 index 00000000..9265bc06 --- /dev/null +++ b/dev/containers/CCLazy_list/Infix/index.html @@ -0,0 +1,2 @@ + +Infix (containers.CCLazy_list.Infix)

Module CCLazy_list.Infix

val (>|=) : 'a t -> ('a -> 'b) -> 'b t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
val (<|>) : 'a t -> 'a t -> 'a t

Alias to default.

since
2.1
\ No newline at end of file diff --git a/dev/containers/CCLazy_list/index.html b/dev/containers/CCLazy_list/index.html new file mode 100644 index 00000000..c8e3e839 --- /dev/null +++ b/dev/containers/CCLazy_list/index.html @@ -0,0 +1,2 @@ + +CCLazy_list (containers.CCLazy_list)

Module CCLazy_list

Lazy List

since
0.17
type +'a t = 'a node lazy_t
and +'a node =
| Nil
| Cons of 'a * 'a t
val empty : 'a t

Empty list.

val return : 'a -> 'a t

Return a computed value.

val is_empty : _ t -> bool

Evaluate the head.

val length : _ t -> int

length l returns the number of elements in l, eagerly (linear time). Caution, will not terminate if l is infinite.

val cons : 'a -> 'a t -> 'a t
val head : 'a t -> ('a * 'a t) option

Evaluate head, return it, or None if the list is empty.

val map : f:('a -> 'b) -> 'a t -> 'b t

Lazy map.

val filter : f:('a -> bool) -> 'a t -> 'a t

Filter values.

since
0.18
val take : int -> 'a t -> 'a t

Take at most n values.

since
0.18
val append : 'a t -> 'a t -> 'a t

Lazy concatenation.

val flat_map : f:('a -> 'b t) -> 'a t -> 'b t

Monadic flatten + map.

val default : default:'a t -> 'a t -> 'a t

Choice operator.

since
2.1
module Infix : sig ... end
include module type of Infix
val (>|=) : 'a t -> ('a -> 'b) -> 'b t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
val (<|>) : 'a t -> 'a t -> 'a t

Alias to default.

since
2.1
type 'a gen = unit -> 'a option
val of_gen : 'a gen -> 'a t
val of_list : 'a list -> 'a t
val to_list : 'a t -> 'a list
val to_list_rev : 'a t -> 'a list
val to_gen : 'a t -> 'a gen
\ No newline at end of file diff --git a/dev/containers/CCList.odoc b/dev/containers/CCList.odoc deleted file mode 100644 index 6b54c2aeb5e64662642cedc84d489b8aa5810248..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26812 zcmd6Q33wdUm98aKVRu`$B`=a~uqjzBsatNfHg8y7WXm>~u`$?&01gqYR!M5y>Xy4( zwnV@~65b<_WTwO#1}1411Ids8&dV_2%VL(7ZAf5VcqD;5CNBgC17S$WK7_pgoO5qg zbxQ)0;eFrmea2PQ_ndpqx#ynko+@YhGl`b=SVyew${X(b>WmpP8u7=(pN05Sb$@dr zlg`JJX*-*{t+A(PS2CCHZu|YMuO0dBH($9gb)@qTA9}8Lt3VF*&zN!QFJ{bm|LHSk zocrNfGiHQl6y6=YQSKB94{qr$IGsJ2;gOU*Y^U=%E1$7aG+%eOF{@B$+&VfiU}v4S zTW?u&+W*>kWXJzJ^qtpt?06+oD75tS?9QY!!

JP%`1P{rc?tTW{I((D=8q+rRP5 zr@s4Wp|GweKAcLX^L92JPwmKLhvWIJ@mw;IbK1r~|M9sG?z`{cwo`w+|GaP9G#fL? z0H`do7JDj#>PlU^_dFp@PbiwzApFT03Tq3`$ zS>?3-;_KxP#O|)Y^T1c*J-?{=%tWCOBB42LmmWOz+U%U)+E1)|`me8@we77!A#zqc zpFC`XET`>*bu;T9e*C^yoj)xa``pnBZY&g<&$hFNLE~W?MBZY&`lFj(sERII6~6Z0 zFa6=|AaZX!-JcnD+8#=Ee17(G&zKKi^~L&^w=e!9{bc7xQ$V`fxbXU~bzO7%6Xt0@ zJATE_-T;;7CWhjW;RUIkxy4_6)coM-UwS%!^w znPIy%mmJQdTaRS22XiCwgpFZZDO!8`Mw6-j)_!{+jyc=*Kim84-TN1PrRLn-Pkif< z2XkAxox-&zjv4#HIs4G4ole+Jp}YG;q2ScTv9QkZ?&ICKywh=R42`Cf`EFbpCVpY4 zRQ;fxc8n$d@ibr&4ZE>1Gm=kc(h3y=T-k7tRK_vdOF>$?ZzyyZ9;iPnnS!D{5bDXK zbKQmO2)F=b$Bf&J1FbV zi-7?>(XcNc&)ao*;vKx+e8PCjF|L@n-kC7&1(`S8f3NXeW6Dks=7${PW5=1@5OKyN z67%(-Oa}fE%P~9>&)U5LkaLVrGla2_N6Yoexb9==E@3dUEYMjD*Lx&Mv;CutU+IHw zX1Epww=9I^$0Xn8m6Oq13yv|9N1cwVN;R^5#ZbRvJSRi;F+#^EC+^I$%`5UL$9PqK zi}P=^vV#CWNr9hJpC*Fdk})|SLD_DM5qo%%N4)E^5ap^O-{PDUNWBFoihyG31%2YthDYmASK*y(-%oF&5^_0jNc zj1=KKfh#SXFExXXUKega;GXrt{ltZP$p`l@jSzn#PQ)D*m^TU}x!*D*v-?L3*Ft=$ zX&@EP=dq2&~R-ORNvN9j^2bmTYK;M(^>(LOc83T6g2T`t&106`D>5x# z&_EDLJUOA{WR}G+UPNVk;m*}7b9ta69_XkKw6}?5&hwR5PMYs359s4Qpu^beseWv(0m!_(UV#yFeK1w{ z+nA{cz8z3O+|OmzEdN9^17?$hLj<|L7_wXeksi$^`i&qi1oBRnX9s}J@dJ^}%Xe#8 zJ_*1%`sQieRI#ke->(GwD9MR%jQDXlbqO``YXGU#@V~;%JdyS9aXDY%cs{HIMtHQb z7S=VM^0_`djrJIak#CX~hqS+NMg=w(Z>k8N-S9EtOfQl*x zAXTq8ipzOwmOnKPBvWjbD(>}xeOZHrJ+KxJ%&3+5c!4V(^8r4k0X>scvE2vQ8i7mA zCn>-HB|q{(zN#V5=P9o%Fs;3~sqU6*8`rgJ$&5V>@mwyG0FpO-a;(Tx>|q27$LxhIs%WNC6JjUwGKDtL5S zW4IImY?e&puWAH*@xjHk%4$Fui@J!!QZao zKkvbR!3Y2M5t_Oe@jOIto;e9#Z(8G<9{hKF@DDZ&+u1=#&g`EA`?Q{$q9g6TjGy6V zzO2&EaY>sGS%+zUzYa1quk-?Nmf%~w4tk|tZm@?(^5aNBC*-Q&gsf!FDoj`y7waap zK=r24z+f!olPbc=T(1k)tZ%GT!HHN|J3pFD6NXSeI|^&iU?m3zaNC%&Hd+TRVzh

RdxyQNvHcl$LX$F>pE@)D_-->4kM>!*p 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 diff --git a/dev/containers.thread/CCSemaphore/.jbuilder-keep b/dev/containers/CCList/.dune-keep similarity index 100% rename from dev/containers.thread/CCSemaphore/.jbuilder-keep rename to dev/containers/CCList/.dune-keep diff --git a/dev/containers/CCList/Assoc/index.html b/dev/containers/CCList/Assoc/index.html index d463a51a..50616761 100644 --- a/dev/containers/CCList/Assoc/index.html +++ b/dev/containers/CCList/Assoc/index.html @@ -1,2 +1,2 @@ -Assoc (containers.CCList.Assoc)

Module CCList.Assoc

type ('a, 'b) t = ('a * 'b) list
val get : eq:('a -> 'a -> bool) -> 'a -> ('a'b) t -> 'b option

Find the element.

val get_exn : eq:('a -> 'a -> bool) -> 'a -> ('a'b) t -> 'b

Like get, but unsafe.

raises Not_found

if the element is not present.

val set : eq:('a -> 'a -> bool) -> 'a -> 'b -> ('a'b) t -> ('a'b) t

Add the binding into the list (erase it if already present).

val mem : eq:('a -> 'a -> bool) -> 'a -> ('a_) t -> bool

mem x l returns true iff x is a key in l.

since
0.16
val update : eq:('a -> 'a -> bool) -> f:('b option -> 'b option) -> 'a -> ('a'b) t -> ('a'b) t

update k ~f l updates l on the key k, by calling f (get l k) and removing k if it returns None, mapping k to v' if it returns Some v'.

since
0.16
val remove : eq:('a -> 'a -> bool) -> 'a -> ('a'b) t -> ('a'b) t

remove x l removes the first occurrence of k from l.

since
0.17
\ No newline at end of file +Assoc (containers.CCList.Assoc)

Module CCList.Assoc

type ('a, 'b) t = ('a * 'b) list
val get : eq:('a -> 'a -> bool) -> 'a -> ('a'b) t -> 'b option

Find the element.

val get_exn : eq:('a -> 'a -> bool) -> 'a -> ('a'b) t -> 'b

Like get, but unsafe.

raises Not_found

if the element is not present.

val set : eq:('a -> 'a -> bool) -> 'a -> 'b -> ('a'b) t -> ('a'b) t

Add the binding into the list (erase it if already present).

val mem : eq:('a -> 'a -> bool) -> 'a -> ('a_) t -> bool

mem x l returns true iff x is a key in l.

since
0.16
val update : eq:('a -> 'a -> bool) -> f:('b option -> 'b option) -> 'a -> ('a'b) t -> ('a'b) t

update k ~f l updates l on the key k, by calling f (get l k) and removing k if it returns None, mapping k to v' if it returns Some v'.

since
0.16
val remove : eq:('a -> 'a -> bool) -> 'a -> ('a'b) t -> ('a'b) t

remove x l removes the first occurrence of k from l.

since
0.17
\ No newline at end of file diff --git a/dev/containers/CCList/Infix/index.html b/dev/containers/CCList/Infix/index.html index d9bc337f..d4f1eb0f 100644 --- a/dev/containers/CCList/Infix/index.html +++ b/dev/containers/CCList/Infix/index.html @@ -1,2 +1,2 @@ -Infix (containers.CCList.Infix)

Module CCList.Infix

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Infix version of map with reversed arguments.

val (@) : 'a t -> 'a t -> 'a t

As append. Concatenate two lists.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

funs <*> l is product (fun f x -> f x) funs l.

val (<$>) : ('a -> 'b) -> 'a t -> 'b t

As map.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

l >>= f is flat_map f l.

val (--) : int -> int -> int t

Infix alias for range. Bounds included.

val (--^) : int -> int -> int t

Infix alias for range'. Second bound excluded.

\ No newline at end of file +Infix (containers.CCList.Infix)

Module CCList.Infix

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Infix version of map with reversed arguments.

val (@) : 'a t -> 'a t -> 'a t

As append. Concatenate two lists.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

funs <*> l is product (fun f x -> f x) funs l.

val (<$>) : ('a -> 'b) -> 'a t -> 'b t

As map.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

l >>= f is flat_map f l.

val (--) : int -> int -> int t

Infix alias for range. Bounds included.

val (--^) : int -> int -> int t

Infix alias for range'. Second bound excluded.

\ No newline at end of file diff --git a/dev/containers/CCList/Ref/index.html b/dev/containers/CCList/Ref/index.html index 39dadcdb..0cb71b09 100644 --- a/dev/containers/CCList/Ref/index.html +++ b/dev/containers/CCList/Ref/index.html @@ -1,2 +1,2 @@ -Ref (containers.CCList.Ref)

Module CCList.Ref

type 'a t = 'a list Pervasives.ref
val push : 'a t -> 'a -> unit
val pop : 'a t -> 'a option
val pop_exn : 'a t -> 'a

Unsafe version of pop.

raises Failure

if the list is empty.

val create : unit -> 'a t

Create a new list reference.

val clear : _ t -> unit

Remove all elements.

val lift : ('a list -> 'b) -> 'a t -> 'b

Apply a list function to the content.

val push_list : 'a t -> 'a list -> unit

Add elements of the list at the beginning of the list ref. Elements at the end of the list will be at the beginning of the list ref.

\ No newline at end of file +Ref (containers.CCList.Ref)

Module CCList.Ref

type 'a t = 'a list Pervasives.ref
val push : 'a t -> 'a -> unit
val pop : 'a t -> 'a option
val pop_exn : 'a t -> 'a

Unsafe version of pop.

raises Failure

if the list is empty.

val create : unit -> 'a t

Create a new list reference.

val clear : _ t -> unit

Remove all elements.

val lift : ('a list -> 'b) -> 'a t -> 'b

Apply a list function to the content.

val push_list : 'a t -> 'a list -> unit

Add elements of the list at the beginning of the list ref. Elements at the end of the list will be at the beginning of the list ref.

\ No newline at end of file diff --git a/dev/containers/CCList/Traverse/argument-1-M/index.html b/dev/containers/CCList/Traverse/argument-1-M/index.html index 465ec6fb..f0c90904 100644 --- a/dev/containers/CCList/Traverse/argument-1-M/index.html +++ b/dev/containers/CCList/Traverse/argument-1-M/index.html @@ -1,2 +1,2 @@ -1-M (containers.CCList.Traverse.1-M)

Parameter Traverse.1-M

type 'a t
val return : 'a -> 'a t

Monadic return.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

\ No newline at end of file +1-M (containers.CCList.Traverse.1-M)

Parameter Traverse.1-M

type 'a t
val return : 'a -> 'a t

Monadic return.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

\ No newline at end of file diff --git a/dev/containers/CCList/Traverse/index.html b/dev/containers/CCList/Traverse/index.html index 1099d6e7..88af330b 100644 --- a/dev/containers/CCList/Traverse/index.html +++ b/dev/containers/CCList/Traverse/index.html @@ -1,2 +1,2 @@ -Traverse (containers.CCList.Traverse)

Module CCList.Traverse

Parameters

Signature

val sequence_m : 'a M.t t -> 'a t M.t
val fold_m : ('b -> 'a -> 'b M.t) -> 'b -> 'a t -> 'b M.t
val map_m : ('a -> 'b M.t) -> 'a t -> 'b t M.t
val map_m_par : ('a -> 'b M.t) -> 'a t -> 'b t M.t

Like map_m but map_m_par f (x::l) evaluates f x and f l "in parallel" before combining their result (for instance in Lwt).

\ No newline at end of file +Traverse (containers.CCList.Traverse)

Module CCList.Traverse

Parameters

Signature

val sequence_m : 'a M.t t -> 'a t M.t
val fold_m : ('b -> 'a -> 'b M.t) -> 'b -> 'a t -> 'b M.t
val map_m : ('a -> 'b M.t) -> 'a t -> 'b t M.t
val map_m_par : ('a -> 'b M.t) -> 'a t -> 'b t M.t

Like map_m but map_m_par f (x::l) evaluates f x and f l "in parallel" before combining their result (for instance in Lwt).

\ No newline at end of file diff --git a/dev/containers/CCList/index.html b/dev/containers/CCList/index.html index d5c82905..4049371f 100644 --- a/dev/containers/CCList/index.html +++ b/dev/containers/CCList/index.html @@ -1,6 +1,6 @@ -CCList (containers.CCList)

Module CCList

Complements to list

type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a printer = Format.formatter -> 'a -> unit
type 'a random_gen = Random.State.t -> 'a
include module type of List
val length : 'a list -> int
val compare_lengths : 'a list -> 'b list -> int
val compare_length_with : 'a list -> int -> int
val cons : 'a -> 'a list -> 'a list
val hd : 'a list -> 'a
val tl : 'a list -> 'a list
val nth : 'a list -> int -> 'a
val nth_opt : 'a list -> int -> 'a option
val rev : 'a list -> 'a list
val init : int -> (int -> 'a) -> 'a list
val append : 'a list -> 'a list -> 'a list
val rev_append : 'a list -> 'a list -> 'a list
val concat : 'a list list -> 'a list
val flatten : 'a list list -> 'a list
val iter : ('a -> unit) -> 'a list -> unit
val iteri : (int -> 'a -> unit) -> 'a list -> unit
val map : ('a -> 'b) -> 'a list -> 'b list
val mapi : (int -> 'a -> 'b) -> 'a list -> 'b list
val rev_map : ('a -> 'b) -> 'a list -> 'b list
val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a
val fold_right : ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b
val iter2 : ('a -> 'b -> unit) -> 'a list -> 'b list -> unit
val map2 : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list
val rev_map2 : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list
val fold_left2 : ('a -> 'b -> 'c -> 'a) -> 'a -> 'b list -> 'c list -> 'a
val fold_right2 : ('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> 'c -> 'c
val for_all : ('a -> bool) -> 'a list -> bool
val exists : ('a -> bool) -> 'a list -> bool
val for_all2 : ('a -> 'b -> bool) -> 'a list -> 'b list -> bool
val exists2 : ('a -> 'b -> bool) -> 'a list -> 'b list -> bool
val mem : 'a -> 'a list -> bool
val memq : 'a -> 'a list -> bool
val find : ('a -> bool) -> 'a list -> 'a
val find_opt : ('a -> bool) -> 'a list -> 'a option
val filter : ('a -> bool) -> 'a list -> 'a list
val find_all : ('a -> bool) -> 'a list -> 'a list
val partition : ('a -> bool) -> 'a list -> 'a list * 'a list
val assoc : 'a -> ('a * 'b) list -> 'b
val assoc_opt : 'a -> ('a * 'b) list -> 'b option
val assq : 'a -> ('a * 'b) list -> 'b
val assq_opt : 'a -> ('a * 'b) list -> 'b option
val mem_assoc : 'a -> ('a * 'b) list -> bool
val mem_assq : 'a -> ('a * 'b) list -> bool
val remove_assoc : 'a -> ('a * 'b) list -> ('a * 'b) list
val remove_assq : 'a -> ('a * 'b) list -> ('a * 'b) list
val split : ('a * 'b) list -> 'a list * 'b list
val combine : 'a list -> 'b list -> ('a * 'b) list
val sort : ('a -> 'a -> int) -> 'a list -> 'a list
val stable_sort : ('a -> 'a -> int) -> 'a list -> 'a list
val fast_sort : ('a -> 'a -> int) -> 'a list -> 'a list
val sort_uniq : ('a -> 'a -> int) -> 'a list -> 'a list
val merge : ('a -> 'a -> int) -> 'a list -> 'a list -> 'a list
type 'a t = 'a list
val empty : 'a t

empty is [].

val is_empty : _ t -> bool

is_empty l returns true iff l = [].

since
0.11
val map : ('a -> 'b) -> 'a t -> 'b t

Safe version of List.map.

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Infix version of map with reversed arguments.

since
0.5
val cons : 'a -> 'a t -> 'a t

cons x l is x::l.

since
0.12
val append : 'a t -> 'a t -> 'a t

Safe version of List.append. Concatenate two lists.

val cons_maybe : 'a option -> 'a t -> 'a t

cons_maybe (Some x) l is x :: l. cons_maybe None l is l.

since
0.13
val (@) : 'a t -> 'a t -> 'a t

Like append. Concatenate two lists.

val filter : ('a -> bool) -> 'a t -> 'a t

Safe version of List.filter. filter p l returns all the elements of the list l that satisfy the predicate p. The order of the elements in the input list is preserved.

val fold_right : ('a -> 'b -> 'b) -> 'a t -> 'b -> 'b

Safe version of fold_right. fold_right f [a1; ...; an] b is f a1 (f a2 (... (f an b) ...)).

val fold_while : ('a -> 'b -> 'a * [ `Stop | `Continue ]) -> 'a -> 'b t -> 'a

Fold until a stop condition via ('a, `Stop) is indicated by the accumulator.

since
0.8
val fold_map : ('acc -> 'a -> 'acc * 'b) -> 'acc -> 'a list -> 'acc * 'b list

fold_map f init l is a fold_left-like function, but it also maps the list to another list.

since
0.14
val scan_left : ('acc -> 'a -> 'acc) -> 'acc -> 'a list -> 'acc list

scan_left f init l returns the list [init; f init x0; f (f init x0) x1; ...] where x0, x1, etc. are the elements of l.

since
1.2, but only
since
2.2 with labels
val fold_map2 : ('acc -> 'a -> 'b -> 'acc * 'c) -> 'acc -> 'a list -> 'b list -> 'acc * 'c list

fold_map2 is to fold_map what List.map2 is to List.map.

raises Invalid_argument

if the lists do not have the same length.

since
0.16
val fold_filter_map : ('acc -> 'a -> 'acc * 'b option) -> 'acc -> 'a list -> 'acc * 'b list

fold_filter_map f init l is a fold_left-like function, but also generates a list of output in a way similar to filter_map.

since
0.17
val fold_flat_map : ('acc -> 'a -> 'acc * 'b list) -> 'acc -> 'a list -> 'acc * 'b list

fold_flat_map f acc l is a fold_left-like function, but it also maps the list to a list of lists that is then flatten'd.

since
0.14
val count : ('a -> bool) -> 'a list -> int

count p l counts how many elements of l satisfy predicate p.

since
1.5, but only
since
2.2 with labels
val count_true_false : ('a -> bool) -> 'a list -> int * int
since
2.4
val init : int -> (int -> 'a) -> 'a t

init len f is f 0; f 1; ...; f (len-1).

raises Invalid_argument

if len < 0.

since
0.6
val combine : 'a list -> 'b list -> ('a * 'b) list

Like List.combine but tail-recursive. Transform a pair of lists into a list of pairs: combine [a1; ...; an] [b1; ...; bn] is [(a1,b1); ...; (an,bn)].

raises Invalid_argument

if the lists have distinct lengths.

since
1.2, but only
since
2.2 with labels
val combine_gen : 'a list -> 'b list -> ('a * 'b) gen

Lazy version of combine. Unlike combine, it does not fail if the lists have different lengths; instead, the output has as many pairs as the smallest input list.

since
1.2, but only
since
2.2 with labels
val split : ('a * 'b) t -> 'a t * 'b t

A tail-recursive version of List.split. Transform a list of pairs into a pair of lists: split [(a1,b1); ...; (an,bn)] is ([a1; ...; an], [b1; ...; bn]).

since
1.2, but only
since
2.2 with labels
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
val compare_lengths : 'a t -> 'b t -> int

Equivalent to compare (length l1) (length l2) but more efficient. Compare the lengths of two lists.

since
1.5, but only
since
2.2 with labels
val compare_length_with : 'a t -> int -> int

Equivalent to compare (length l) x but more efficient. Compare the length of a list to an integer.

since
1.5, but only
since
2.2 with labels
val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
val flat_map : ('a -> 'b t) -> 'a t -> 'b t

Map and flatten at the same time (safe). Evaluation order is not guaranteed.

val flatten : 'a t t -> 'a t

Safe flatten. Concatenate a list of lists.

val product : ('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t

Cartesian product of the two lists, with the given combinator.

val fold_product : ('c -> 'a -> 'b -> 'c) -> 'c -> 'a t -> 'b t -> 'c

Fold on the cartesian product.

val cartesian_product : 'a t t -> 'a t t

Produce the cartesian product of this list of lists, by returning all the ways of picking one element per sublist. NOTE the order of the returned list is unspecified. For example:

# cartesian_product [[1;2];[3];[4;5;6]] |> sort =
+CCList (containers.CCList)

Module CCList

Complements to list

type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a printer = Format.formatter -> 'a -> unit
type 'a random_gen = Random.State.t -> 'a
include module type of List
val length : 'a list -> int
val compare_lengths : 'a list -> 'b list -> int
val compare_length_with : 'a list -> int -> int
val cons : 'a -> 'a list -> 'a list
val hd : 'a list -> 'a
val tl : 'a list -> 'a list
val nth : 'a list -> int -> 'a
val nth_opt : 'a list -> int -> 'a option
val rev : 'a list -> 'a list
val init : int -> (int -> 'a) -> 'a list
val append : 'a list -> 'a list -> 'a list
val rev_append : 'a list -> 'a list -> 'a list
val concat : 'a list list -> 'a list
val flatten : 'a list list -> 'a list
val iter : ('a -> unit) -> 'a list -> unit
val iteri : (int -> 'a -> unit) -> 'a list -> unit
val map : ('a -> 'b) -> 'a list -> 'b list
val mapi : (int -> 'a -> 'b) -> 'a list -> 'b list
val rev_map : ('a -> 'b) -> 'a list -> 'b list
val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a
val fold_right : ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b
val iter2 : ('a -> 'b -> unit) -> 'a list -> 'b list -> unit
val map2 : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list
val rev_map2 : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list
val fold_left2 : ('a -> 'b -> 'c -> 'a) -> 'a -> 'b list -> 'c list -> 'a
val fold_right2 : ('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> 'c -> 'c
val for_all : ('a -> bool) -> 'a list -> bool
val exists : ('a -> bool) -> 'a list -> bool
val for_all2 : ('a -> 'b -> bool) -> 'a list -> 'b list -> bool
val exists2 : ('a -> 'b -> bool) -> 'a list -> 'b list -> bool
val mem : 'a -> 'a list -> bool
val memq : 'a -> 'a list -> bool
val find : ('a -> bool) -> 'a list -> 'a
val find_opt : ('a -> bool) -> 'a list -> 'a option
val filter : ('a -> bool) -> 'a list -> 'a list
val find_all : ('a -> bool) -> 'a list -> 'a list
val partition : ('a -> bool) -> 'a list -> 'a list * 'a list
val assoc : 'a -> ('a * 'b) list -> 'b
val assoc_opt : 'a -> ('a * 'b) list -> 'b option
val assq : 'a -> ('a * 'b) list -> 'b
val assq_opt : 'a -> ('a * 'b) list -> 'b option
val mem_assoc : 'a -> ('a * 'b) list -> bool
val mem_assq : 'a -> ('a * 'b) list -> bool
val remove_assoc : 'a -> ('a * 'b) list -> ('a * 'b) list
val remove_assq : 'a -> ('a * 'b) list -> ('a * 'b) list
val split : ('a * 'b) list -> 'a list * 'b list
val combine : 'a list -> 'b list -> ('a * 'b) list
val sort : ('a -> 'a -> int) -> 'a list -> 'a list
val stable_sort : ('a -> 'a -> int) -> 'a list -> 'a list
val fast_sort : ('a -> 'a -> int) -> 'a list -> 'a list
val sort_uniq : ('a -> 'a -> int) -> 'a list -> 'a list
val merge : ('a -> 'a -> int) -> 'a list -> 'a list -> 'a list
type 'a t = 'a list
val empty : 'a t

empty is [].

val is_empty : _ t -> bool

is_empty l returns true iff l = [].

since
0.11
val map : ('a -> 'b) -> 'a t -> 'b t

Safe version of List.map.

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Infix version of map with reversed arguments.

since
0.5
val cons : 'a -> 'a t -> 'a t

cons x l is x::l.

since
0.12
val append : 'a t -> 'a t -> 'a t

Safe version of List.append. Concatenate two lists.

val cons_maybe : 'a option -> 'a t -> 'a t

cons_maybe (Some x) l is x :: l. cons_maybe None l is l.

since
0.13
val (@) : 'a t -> 'a t -> 'a t

Like append. Concatenate two lists.

val filter : ('a -> bool) -> 'a t -> 'a t

Safe version of List.filter. filter p l returns all the elements of the list l that satisfy the predicate p. The order of the elements in the input list is preserved.

val fold_right : ('a -> 'b -> 'b) -> 'a t -> 'b -> 'b

Safe version of fold_right. fold_right f [a1; ...; an] b is f a1 (f a2 (... (f an b) ...)).

val fold_while : ('a -> 'b -> 'a * [ `Stop | `Continue ]) -> 'a -> 'b t -> 'a

Fold until a stop condition via ('a, `Stop) is indicated by the accumulator.

since
0.8
val fold_map : ('acc -> 'a -> 'acc * 'b) -> 'acc -> 'a list -> 'acc * 'b list

fold_map f init l is a fold_left-like function, but it also maps the list to another list.

since
0.14
val scan_left : ('acc -> 'a -> 'acc) -> 'acc -> 'a list -> 'acc list

scan_left f init l returns the list [init; f init x0; f (f init x0) x1; ...] where x0, x1, etc. are the elements of l.

since
1.2, but only
since
2.2 with labels
val fold_map2 : ('acc -> 'a -> 'b -> 'acc * 'c) -> 'acc -> 'a list -> 'b list -> 'acc * 'c list

fold_map2 is to fold_map what List.map2 is to List.map.

raises Invalid_argument

if the lists do not have the same length.

since
0.16
val fold_filter_map : ('acc -> 'a -> 'acc * 'b option) -> 'acc -> 'a list -> 'acc * 'b list

fold_filter_map f init l is a fold_left-like function, but also generates a list of output in a way similar to filter_map.

since
0.17
val fold_flat_map : ('acc -> 'a -> 'acc * 'b list) -> 'acc -> 'a list -> 'acc * 'b list

fold_flat_map f acc l is a fold_left-like function, but it also maps the list to a list of lists that is then flatten'd.

since
0.14
val count : ('a -> bool) -> 'a list -> int

count p l counts how many elements of l satisfy predicate p.

since
1.5, but only
since
2.2 with labels
val count_true_false : ('a -> bool) -> 'a list -> int * int
since
2.4
val init : int -> (int -> 'a) -> 'a t

init len f is f 0; f 1; ...; f (len-1).

raises Invalid_argument

if len < 0.

since
0.6
val combine : 'a list -> 'b list -> ('a * 'b) list

Like List.combine but tail-recursive. Transform a pair of lists into a list of pairs: combine [a1; ...; an] [b1; ...; bn] is [(a1,b1); ...; (an,bn)].

raises Invalid_argument

if the lists have distinct lengths.

since
1.2, but only
since
2.2 with labels
val combine_gen : 'a list -> 'b list -> ('a * 'b) gen

Lazy version of combine. Unlike combine, it does not fail if the lists have different lengths; instead, the output has as many pairs as the smallest input list.

since
1.2, but only
since
2.2 with labels
val split : ('a * 'b) t -> 'a t * 'b t

A tail-recursive version of List.split. Transform a list of pairs into a pair of lists: split [(a1,b1); ...; (an,bn)] is ([a1; ...; an], [b1; ...; bn]).

since
1.2, but only
since
2.2 with labels
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
val compare_lengths : 'a t -> 'b t -> int

Equivalent to compare (length l1) (length l2) but more efficient. Compare the lengths of two lists.

since
1.5, but only
since
2.2 with labels
val compare_length_with : 'a t -> int -> int

Equivalent to compare (length l) x but more efficient. Compare the length of a list to an integer.

since
1.5, but only
since
2.2 with labels
val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
val flat_map : ('a -> 'b t) -> 'a t -> 'b t

Map and flatten at the same time (safe). Evaluation order is not guaranteed.

val flatten : 'a t t -> 'a t

Safe flatten. Concatenate a list of lists.

val product : ('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t

Cartesian product of the two lists, with the given combinator.

val fold_product : ('c -> 'a -> 'b -> 'c) -> 'c -> 'a t -> 'b t -> 'c

Fold on the cartesian product.

val cartesian_product : 'a t t -> 'a t t

Produce the cartesian product of this list of lists, by returning all the ways of picking one element per sublist. NOTE the order of the returned list is unspecified. For example:

# cartesian_product [[1;2];[3];[4;5;6]] |> sort =
 [[1;3;4];[1;3;5];[1;3;6];[2;3;4];[2;3;5];[2;3;6]];;
 # cartesian_product [[1;2];[];[4;5;6]] = [];;
 # cartesian_product [[1;2];[3];[4];[5];[6]] |> sort =
-[[1;3;4;5;6];[2;3;4;5;6]];;

invariant: cartesian_product l = map_product id l.

since
1.2, but only
since
2.2 with labels
val map_product_l : ('a -> 'b list) -> 'a list -> 'b list list

map_product_l f l maps each element of l to a list of objects of type 'b using f. We obtain [l1;l2;...;ln] where length l=n and li : 'b list. Then, it returns all the ways of picking exactly one element per li.

since
1.2, but only
since
2.2 with labels
val diagonal : 'a t -> ('a * 'a) t

All pairs of distinct positions of the list. list_diagonal l will return the list of List.nth i l, List.nth j l if i < j.

val partition_map : ('a -> [< `Left of 'b | `Right of 'c | `Drop ]) -> 'a list -> 'b list * 'c list

partition_map f l maps f on l and gather results in lists:

  • if f x = `Left y, adds y to the first list.
  • if f x = `Right z, adds z to the second list.
  • if f x = `Drop, ignores x.
since
0.11
val group_by : ?⁠hash:('a -> int) -> ?⁠eq:('a -> 'a -> bool) -> 'a t -> 'a list t

Group equal elements, regardless of their order of appearance. precondition: for any x and y, if eq x y then hash x=hash y must hold.

since
2.3
val join : join_row:('a -> 'b -> 'c option) -> 'a t -> 'b t -> 'c t

join ~join_row a b combines every element of a with every element of b using join_row. If join_row returns None, then the two elements do not combine. Assume that b allows for multiple iterations.

since
2.3
val join_by : ?⁠eq:('key -> 'key -> bool) -> ?⁠hash:('key -> int) -> ('a -> 'key) -> ('b -> 'key) -> merge:('key -> 'a -> 'b -> 'c option) -> 'a t -> 'b t -> 'c t

join key1 key2 ~merge is a binary operation that takes two sequences a and b, projects their elements resp. with key1 and key2, and combine values (x,y) from (a,b) with the same key using merge. If merge returns None, the combination of values is discarded. precondition: for any x and y, if eq x y then hash x=hash y must hold.

since
2.3
val join_all_by : ?⁠eq:('key -> 'key -> bool) -> ?⁠hash:('key -> int) -> ('a -> 'key) -> ('b -> 'key) -> merge:('key -> 'a list -> 'b list -> 'c option) -> 'a t -> 'b t -> 'c t

join_all_by key1 key2 ~merge is a binary operation that takes two sequences a and b, projects their elements resp. with key1 and key2, and, for each key k occurring in at least one of them:

  • compute the list l1 of elements of a that map to k
  • compute the list l2 of elements of b that map to k
  • call merge k l1 l2. If merge returns None, the combination of values is discarded, otherwise it returns Some c and c is inserted in the result.
since
2.3
val group_join_by : ?⁠eq:('a -> 'a -> bool) -> ?⁠hash:('a -> int) -> ('b -> 'a) -> 'a t -> 'b t -> ('a * 'b list) t

group_join_by key2 associates to every element x of the first sequence, all the elements y of the second sequence such that eq x (key y). Elements of the first sequences without corresponding values in the second one are mapped to [] precondition: for any x and y, if eq x y then hash x=hash y must hold.

since
2.3
val sublists_of_len : ?⁠last:('a list -> 'a list option) -> ?⁠offset:int -> int -> 'a list -> 'a list list

sublists_of_len n l returns sub-lists of l that have length n. By default, these sub-lists are non overlapping: sublists_of_len 2 [1;2;3;4;5;6] returns [1;2]; [3;4]; [5;6].

Examples:

  • sublists_of_len 2 [1;2;3;4;5;6] = [[1;2]; [3;4]; [5;6]].
  • sublists_of_len 2 ~offset:3 [1;2;3;4;5;6] = [1;2];[4;5].
  • sublists_of_len 3 ~last:CCOpt.return [1;2;3;4] = [1;2;3];[4].
  • sublists_of_len 2 [1;2;3;4;5] = [[1;2]; [3;4]].
parameter offset

the number of elements skipped between two consecutive sub-lists. By default it is n. If offset < n, the sub-lists will overlap; if offset > n, some elements will not appear at all.

parameter last

if provided and the last group of elements g is such that length g < n, last g is called. If last g = Some g', g' is appended; otherwise g is dropped. If last = CCOpt.return, it will simply keep the last group. By default, last = fun _ -> None, i.e. the last group is dropped if shorter than n.

raises Invalid_argument

if offset <= 0 or n <= 0. See CCList.sublists_of_len for more details.

since
1.0, but only
since
1.5 with labels
val intersperse : 'a -> 'a list -> 'a list

Insert the first argument between every element of the list.

since
2.1, but only
since
2.2 with labels
val interleave : 'a list -> 'a list -> 'a list

interleave [x1…xn] [y1…ym] is x1,y1,x2,y2,… and finishes with the suffix of the longest list.

since
2.1, but only
since
2.2 with labels
val pure : 'a -> 'a t

pure is return.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

funs <*> l is product (fun f x -> f x) funs l.

val (<$>) : ('a -> 'b) -> 'a t -> 'b t

(<$>) is map.

val return : 'a -> 'a t

return x is x.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

l >>= f is flat_map f l.

val take : int -> 'a t -> 'a t

Take the n first elements, drop the rest.

val drop : int -> 'a t -> 'a t

Drop the n first elements, keep the rest.

val hd_tl : 'a t -> 'a * 'a t

hd_tl (x :: l) returns hd, l.

raises Failure

if the list is empty.

since
0.16
val take_drop : int -> 'a t -> 'a t * 'a t

take_drop n l returns l1, l2 such that l1 @ l2 = l and length l1 = min (length l) n.

val take_while : ('a -> bool) -> 'a t -> 'a t

take_while f l returns the longest prefix of l for which f is true.

since
0.13
val drop_while : ('a -> bool) -> 'a t -> 'a t

drop_while f l drops the longest prefix of l for which f is true.

since
0.13
val take_drop_while : ('a -> bool) -> 'a t -> 'a t * 'a t

take_drop_while p l = take_while p l, drop_while p l.

since
1.2, but only
since
2.2 with labels
val last : int -> 'a t -> 'a t

last n l takes the last n elements of l (or less if l doesn't have that many elements).

val head_opt : 'a t -> 'a option

First element.

since
0.20
val tail_opt : 'a t -> 'a t option

Return the given list without its first element.

since
2.0
val last_opt : 'a t -> 'a option

Last element.

since
0.20
val find_pred : ('a -> bool) -> 'a t -> 'a option

find_pred p l finds the first element of l that satisfies p, or returns None if no element satisfies p.

since
0.11
val find_opt : ('a -> bool) -> 'a t -> 'a option

Safe version of find.

since
1.5, but only
since
2.2 with labels
val find_pred_exn : ('a -> bool) -> 'a t -> 'a

Unsafe version of find_pred.

raises Not_found

if no such element is found.

since
0.11
val find_map : ('a -> 'b option) -> 'a t -> 'b option

find_map f l traverses l, applying f to each element. If for some element x, f x = Some y, then Some y is returned. Otherwise the call returns None.

since
0.11
val find_mapi : (int -> 'a -> 'b option) -> 'a t -> 'b option

Like find_map, but also pass the index to the predicate function.

since
0.11
val find_idx : ('a -> bool) -> 'a t -> (int * 'a) option

find_idx p x returns Some (i,x) where x is the i-th element of l, and p x holds. Otherwise returns None.

val remove : eq:('a -> 'a -> bool) -> key:'a -> 'a t -> 'a t

remove ~key l removes every instance of key from l. Tail-recursive.

parameter eq

equality function.

since
0.11
val filter_map : ('a -> 'b option) -> 'a t -> 'b t

filter_map f l is the sublist of l containing only elements for which f returns Some e. Map and remove elements at the same time.

val keep_some : 'a option t -> 'a t

keep_some l retains only elements of the form Some x. Like filter_map CCFun.id.

since
1.3, but only
since
2.2 with labels
val keep_ok : ('a_) Result.result t -> 'a t

keep_ok l retains only elements of the form Ok x.

since
1.3, but only
since
2.2 with labels
val all_some : 'a option t -> 'a t option

all_some l returns Some l' if all elements of l are of the form Some x, or None otherwise.

since
1.3, but only
since
2.2 with labels
val all_ok : ('a'err) Result.result t -> ('a t'err) Result.result

all_ok l returns Ok l' if all elements of l are of the form Ok x, or Error e otherwise (with the first error met).

since
1.3, but only
since
2.2 with labels
val sorted_merge : cmp:('a -> 'a -> int) -> 'a list -> 'a list -> 'a list

Merge elements from both sorted list.

val sort_uniq : cmp:('a -> 'a -> int) -> 'a list -> 'a list

Sort the list and remove duplicate elements.

val sorted_merge_uniq : cmp:('a -> 'a -> int) -> 'a list -> 'a list -> 'a list

sorted_merge_uniq l1 l2 merges the sorted lists l1 and l2 and removes duplicates.

since
0.10
val is_sorted : cmp:('a -> 'a -> int) -> 'a list -> bool

is_sorted l returns true iff l is sorted (according to given order).

parameter cmp

the comparison function (default Pervasives.compare).

since
0.17
val sorted_insert : cmp:('a -> 'a -> int) -> ?⁠uniq:bool -> 'a -> 'a list -> 'a list

sorted_insert x l inserts x into l such that, if l was sorted, then sorted_insert x l is sorted too.

parameter uniq

if true and x is already in sorted position in l, then x is not duplicated. Default false (x will be inserted in any case).

since
0.17
val uniq_succ : eq:('a -> 'a -> bool) -> 'a list -> 'a list

uniq_succ l removes duplicate elements that occur one next to the other. Examples: uniq_succ [1;2;1] = [1;2;1]. uniq_succ [1;1;2] = [1;2].

since
0.10
val group_succ : eq:('a -> 'a -> bool) -> 'a list -> 'a list list

group_succ ~eq l groups together consecutive elements that are equal according to eq.

since
0.11

Indices

val mapi : (int -> 'a -> 'b) -> 'a t -> 'b t

Like map, but the function is applied to the index of the element as first argument (counting from 0), and the element itself as second argument.

val iteri : (int -> 'a -> unit) -> 'a t -> unit

Like iter, but the function is applied to the index of the element as first argument (counting from 0), and the element itself as second argument.

val iteri2 : (int -> 'a -> 'b -> unit) -> 'a t -> 'b t -> unit

Iter on two lists.

raises Invalid_argument

when lists do not have the same length.

since
2.0, but only
since
2.2 with labels
val foldi : ('b -> int -> 'a -> 'b) -> 'b -> 'a t -> 'b

Like fold but it also passes in the index of each element to the folded function. Tail-recursive.

val foldi2 : ('c -> int -> 'a -> 'b -> 'c) -> 'c -> 'a t -> 'b t -> 'c

Fold on two lists, with index.

raises Invalid_argument

when lists do not have the same length.

since
2.0, but only
since
2.2 with labels
val get_at_idx : int -> 'a t -> 'a option

Get by index in the list. If the index is negative, it will get element starting from the end of the list.

val nth_opt : 'a t -> int -> 'a option

Safe version of nth.

raises Invalid_argument

if the int is negative.

since
1.5, but only
since
2.2 with labels
val get_at_idx_exn : int -> 'a t -> 'a

Get the i-th element, or

raises Not_found

if the index is invalid. If the index is negative, it will get element starting from the end of the list.

val set_at_idx : int -> 'a -> 'a t -> 'a t

Set i-th element (removes the old one), or does nothing if index is too high. If the index is negative, it will set element starting from the end of the list.

val insert_at_idx : int -> 'a -> 'a t -> 'a t

Insert at i-th position, between the two existing elements. If the index is too high, append at the end of the list. If the index is negative, it will insert element starting from the end of the list.

val remove_at_idx : int -> 'a t -> 'a t

Remove element at given index. Does nothing if the index is too high. If the index is negative, it will remove element starting from the end of the list.

Set Operators

Those operations maintain the invariant that the list does not contain duplicates (if it already satisfies it).

val add_nodup : eq:('a -> 'a -> bool) -> 'a -> 'a t -> 'a t

add_nodup x set adds x to set if it was not already present. Linear time.

since
0.11
val remove_one : eq:('a -> 'a -> bool) -> 'a -> 'a t -> 'a t

remove_one x set removes one occurrence of x from set. Linear time.

since
0.11
val mem : eq:('a -> 'a -> bool) -> 'a -> 'a t -> bool

Membership to the list. Linear time.

val subset : eq:('a -> 'a -> bool) -> 'a t -> 'a t -> bool

Test for inclusion.

val uniq : eq:('a -> 'a -> bool) -> 'a t -> 'a t

Remove duplicates w.r.t the equality predicate. Complexity is quadratic in the length of the list, but the order of elements is preserved. If you wish for a faster de-duplication but do not care about the order, use sort_uniq.

val union : eq:('a -> 'a -> bool) -> 'a t -> 'a t -> 'a t

List union. Complexity is product of length of inputs.

val inter : eq:('a -> 'a -> bool) -> 'a t -> 'a t -> 'a t

List intersection. Complexity is product of length of inputs.

Other Constructors

val range_by : step:int -> int -> int -> int t

range_by ~step i j iterates on integers from i to j included, where the difference between successive elements is step. Use a negative step for a decreasing list.

raises Invalid_argument

if step=0.

since
0.18
val range : int -> int -> int t

range i j iterates on integers from i to j included. It works both for decreasing and increasing ranges.

val range' : int -> int -> int t

Like range but the second bound is excluded. For instance range' 0 5 = [0;1;2;3;4].

val (--) : int -> int -> int t

Infix alias for range.

val (--^) : int -> int -> int t

Infix alias for range'.

since
0.17
val replicate : int -> 'a -> 'a t

Replicate the given element n times.

val repeat : int -> 'a t -> 'a t

Concatenate the list with itself n times.

Association Lists

module Assoc : sig ... end
val assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b

Like Assoc.get_exn.

since
2.0
val assoc_opt : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b option

Like Assoc.get.

since
1.5, but only
since
2.0 with labels
val assq_opt : 'a -> ('a * 'b) t -> 'b option

Safe version of assq.

since
1.5, but only
since
2.0 with labels
val mem_assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * _) t -> bool

Like Assoc.mem.

since
2.0
val remove_assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> ('a * 'b) t

Like Assoc.remove.

since
2.0

References on Lists

since
0.3.3
module Ref : sig ... end
module type MONAD = sig ... end
module Traverse : functor (M : MONAD) -> sig ... end

Conversions

val random : 'a random_gen -> 'a t random_gen
val random_non_empty : 'a random_gen -> 'a t random_gen
val random_len : int -> 'a random_gen -> 'a t random_gen
val random_choose : 'a t -> 'a random_gen

Randomly choose an element in the list.

raises Not_found

if the list is empty.

val random_sequence : 'a random_gen t -> 'a t random_gen
val to_seq : 'a t -> 'a sequence

Return a sequence of the elements of the list.

val of_seq : 'a sequence -> 'a t

Build a list from a given sequence. In the result, elements appear in the same order as they did in the source sequence.

val to_gen : 'a t -> 'a gen

Return a gen of the elements of the list.

val of_gen : 'a gen -> 'a t

Build a list from a given gen. In the result, elements appear in the same order as they did in the source gen.

val to_klist : 'a t -> 'a klist

Return a klist of the elements of the list.

val of_klist : 'a klist -> 'a t

Build a list from a given klist. In the result, elements appear in the same order as they did in the source klist.

Infix Operators

It is convenient to open CCList.Infix to access the infix operators without cluttering the scope too much.

since
0.16
module Infix : sig ... end

IO

val pp : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> 'a printer -> 'a t printer

Print the contents of a list.

\ No newline at end of file +[[1;3;4;5;6];[2;3;4;5;6]];;

invariant: cartesian_product l = map_product id l.

since
1.2, but only
since
2.2 with labels
val map_product_l : ('a -> 'b list) -> 'a list -> 'b list list

map_product_l f l maps each element of l to a list of objects of type 'b using f. We obtain [l1;l2;...;ln] where length l=n and li : 'b list. Then, it returns all the ways of picking exactly one element per li.

since
1.2, but only
since
2.2 with labels
val diagonal : 'a t -> ('a * 'a) t

All pairs of distinct positions of the list. list_diagonal l will return the list of List.nth i l, List.nth j l if i < j.

val partition_map : ('a -> [< `Left of 'b | `Right of 'c | `Drop ]) -> 'a list -> 'b list * 'c list

partition_map f l maps f on l and gather results in lists:

  • if f x = `Left y, adds y to the first list.
  • if f x = `Right z, adds z to the second list.
  • if f x = `Drop, ignores x.
since
0.11
val group_by : ?⁠hash:('a -> int) -> ?⁠eq:('a -> 'a -> bool) -> 'a t -> 'a list t

Group equal elements, regardless of their order of appearance. precondition: for any x and y, if eq x y then hash x=hash y must hold.

since
2.3
val join : join_row:('a -> 'b -> 'c option) -> 'a t -> 'b t -> 'c t

join ~join_row a b combines every element of a with every element of b using join_row. If join_row returns None, then the two elements do not combine. Assume that b allows for multiple iterations.

since
2.3
val join_by : ?⁠eq:('key -> 'key -> bool) -> ?⁠hash:('key -> int) -> ('a -> 'key) -> ('b -> 'key) -> merge:('key -> 'a -> 'b -> 'c option) -> 'a t -> 'b t -> 'c t

join key1 key2 ~merge is a binary operation that takes two sequences a and b, projects their elements resp. with key1 and key2, and combine values (x,y) from (a,b) with the same key using merge. If merge returns None, the combination of values is discarded. precondition: for any x and y, if eq x y then hash x=hash y must hold.

since
2.3
val join_all_by : ?⁠eq:('key -> 'key -> bool) -> ?⁠hash:('key -> int) -> ('a -> 'key) -> ('b -> 'key) -> merge:('key -> 'a list -> 'b list -> 'c option) -> 'a t -> 'b t -> 'c t

join_all_by key1 key2 ~merge is a binary operation that takes two sequences a and b, projects their elements resp. with key1 and key2, and, for each key k occurring in at least one of them:

  • compute the list l1 of elements of a that map to k
  • compute the list l2 of elements of b that map to k
  • call merge k l1 l2. If merge returns None, the combination of values is discarded, otherwise it returns Some c and c is inserted in the result.
since
2.3
val group_join_by : ?⁠eq:('a -> 'a -> bool) -> ?⁠hash:('a -> int) -> ('b -> 'a) -> 'a t -> 'b t -> ('a * 'b list) t

group_join_by key2 associates to every element x of the first sequence, all the elements y of the second sequence such that eq x (key y). Elements of the first sequences without corresponding values in the second one are mapped to [] precondition: for any x and y, if eq x y then hash x=hash y must hold.

since
2.3
val sublists_of_len : ?⁠last:('a list -> 'a list option) -> ?⁠offset:int -> int -> 'a list -> 'a list list

sublists_of_len n l returns sub-lists of l that have length n. By default, these sub-lists are non overlapping: sublists_of_len 2 [1;2;3;4;5;6] returns [1;2]; [3;4]; [5;6].

Examples:

  • sublists_of_len 2 [1;2;3;4;5;6] = [[1;2]; [3;4]; [5;6]].
  • sublists_of_len 2 ~offset:3 [1;2;3;4;5;6] = [1;2];[4;5].
  • sublists_of_len 3 ~last:CCOpt.return [1;2;3;4] = [1;2;3];[4].
  • sublists_of_len 2 [1;2;3;4;5] = [[1;2]; [3;4]].
parameter offset

the number of elements skipped between two consecutive sub-lists. By default it is n. If offset < n, the sub-lists will overlap; if offset > n, some elements will not appear at all.

parameter last

if provided and the last group of elements g is such that length g < n, last g is called. If last g = Some g', g' is appended; otherwise g is dropped. If last = CCOpt.return, it will simply keep the last group. By default, last = fun _ -> None, i.e. the last group is dropped if shorter than n.

raises Invalid_argument

if offset <= 0 or n <= 0. See CCList.sublists_of_len for more details.

since
1.0, but only
since
1.5 with labels
val intersperse : 'a -> 'a list -> 'a list

Insert the first argument between every element of the list.

since
2.1, but only
since
2.2 with labels
val interleave : 'a list -> 'a list -> 'a list

interleave [x1…xn] [y1…ym] is x1,y1,x2,y2,… and finishes with the suffix of the longest list.

since
2.1, but only
since
2.2 with labels
val pure : 'a -> 'a t

pure is return.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

funs <*> l is product (fun f x -> f x) funs l.

val (<$>) : ('a -> 'b) -> 'a t -> 'b t

(<$>) is map.

val return : 'a -> 'a t

return x is x.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

l >>= f is flat_map f l.

val take : int -> 'a t -> 'a t

Take the n first elements, drop the rest.

val drop : int -> 'a t -> 'a t

Drop the n first elements, keep the rest.

val hd_tl : 'a t -> 'a * 'a t

hd_tl (x :: l) returns hd, l.

raises Failure

if the list is empty.

since
0.16
val take_drop : int -> 'a t -> 'a t * 'a t

take_drop n l returns l1, l2 such that l1 @ l2 = l and length l1 = min (length l) n.

val take_while : ('a -> bool) -> 'a t -> 'a t

take_while f l returns the longest prefix of l for which f is true.

since
0.13
val drop_while : ('a -> bool) -> 'a t -> 'a t

drop_while f l drops the longest prefix of l for which f is true.

since
0.13
val take_drop_while : ('a -> bool) -> 'a t -> 'a t * 'a t

take_drop_while p l = take_while p l, drop_while p l.

since
1.2, but only
since
2.2 with labels
val last : int -> 'a t -> 'a t

last n l takes the last n elements of l (or less if l doesn't have that many elements).

val head_opt : 'a t -> 'a option

First element.

since
0.20
val tail_opt : 'a t -> 'a t option

Return the given list without its first element.

since
2.0
val last_opt : 'a t -> 'a option

Last element.

since
0.20
val find_pred : ('a -> bool) -> 'a t -> 'a option

find_pred p l finds the first element of l that satisfies p, or returns None if no element satisfies p.

since
0.11
val find_opt : ('a -> bool) -> 'a t -> 'a option

Safe version of find.

since
1.5, but only
since
2.2 with labels
val find_pred_exn : ('a -> bool) -> 'a t -> 'a

Unsafe version of find_pred.

raises Not_found

if no such element is found.

since
0.11
val find_map : ('a -> 'b option) -> 'a t -> 'b option

find_map f l traverses l, applying f to each element. If for some element x, f x = Some y, then Some y is returned. Otherwise the call returns None.

since
0.11
val find_mapi : (int -> 'a -> 'b option) -> 'a t -> 'b option

Like find_map, but also pass the index to the predicate function.

since
0.11
val find_idx : ('a -> bool) -> 'a t -> (int * 'a) option

find_idx p x returns Some (i,x) where x is the i-th element of l, and p x holds. Otherwise returns None.

val remove : eq:('a -> 'a -> bool) -> key:'a -> 'a t -> 'a t

remove ~key l removes every instance of key from l. Tail-recursive.

parameter eq

equality function.

since
0.11
val filter_map : ('a -> 'b option) -> 'a t -> 'b t

filter_map f l is the sublist of l containing only elements for which f returns Some e. Map and remove elements at the same time.

val keep_some : 'a option t -> 'a t

keep_some l retains only elements of the form Some x. Like filter_map CCFun.id.

since
1.3, but only
since
2.2 with labels
val keep_ok : ('a_) Result.result t -> 'a t

keep_ok l retains only elements of the form Ok x.

since
1.3, but only
since
2.2 with labels
val all_some : 'a option t -> 'a t option

all_some l returns Some l' if all elements of l are of the form Some x, or None otherwise.

since
1.3, but only
since
2.2 with labels
val all_ok : ('a'err) Result.result t -> ('a t'err) Result.result

all_ok l returns Ok l' if all elements of l are of the form Ok x, or Error e otherwise (with the first error met).

since
1.3, but only
since
2.2 with labels
val sorted_merge : cmp:('a -> 'a -> int) -> 'a list -> 'a list -> 'a list

Merge elements from both sorted list.

val sort_uniq : cmp:('a -> 'a -> int) -> 'a list -> 'a list

Sort the list and remove duplicate elements.

val sorted_merge_uniq : cmp:('a -> 'a -> int) -> 'a list -> 'a list -> 'a list

sorted_merge_uniq l1 l2 merges the sorted lists l1 and l2 and removes duplicates.

since
0.10
val is_sorted : cmp:('a -> 'a -> int) -> 'a list -> bool

is_sorted l returns true iff l is sorted (according to given order).

parameter cmp

the comparison function (default Pervasives.compare).

since
0.17
val sorted_insert : cmp:('a -> 'a -> int) -> ?⁠uniq:bool -> 'a -> 'a list -> 'a list

sorted_insert x l inserts x into l such that, if l was sorted, then sorted_insert x l is sorted too.

parameter uniq

if true and x is already in sorted position in l, then x is not duplicated. Default false (x will be inserted in any case).

since
0.17
val uniq_succ : eq:('a -> 'a -> bool) -> 'a list -> 'a list

uniq_succ l removes duplicate elements that occur one next to the other. Examples: uniq_succ [1;2;1] = [1;2;1]. uniq_succ [1;1;2] = [1;2].

since
0.10
val group_succ : eq:('a -> 'a -> bool) -> 'a list -> 'a list list

group_succ ~eq l groups together consecutive elements that are equal according to eq.

since
0.11

Indices

val mapi : (int -> 'a -> 'b) -> 'a t -> 'b t

Like map, but the function is applied to the index of the element as first argument (counting from 0), and the element itself as second argument.

val iteri : (int -> 'a -> unit) -> 'a t -> unit

Like iter, but the function is applied to the index of the element as first argument (counting from 0), and the element itself as second argument.

val iteri2 : (int -> 'a -> 'b -> unit) -> 'a t -> 'b t -> unit

Iter on two lists.

raises Invalid_argument

when lists do not have the same length.

since
2.0, but only
since
2.2 with labels
val foldi : ('b -> int -> 'a -> 'b) -> 'b -> 'a t -> 'b

Like fold but it also passes in the index of each element to the folded function. Tail-recursive.

val foldi2 : ('c -> int -> 'a -> 'b -> 'c) -> 'c -> 'a t -> 'b t -> 'c

Fold on two lists, with index.

raises Invalid_argument

when lists do not have the same length.

since
2.0, but only
since
2.2 with labels
val get_at_idx : int -> 'a t -> 'a option

Get by index in the list. If the index is negative, it will get element starting from the end of the list.

val nth_opt : 'a t -> int -> 'a option

Safe version of nth.

raises Invalid_argument

if the int is negative.

since
1.5, but only
since
2.2 with labels
val get_at_idx_exn : int -> 'a t -> 'a

Get the i-th element, or

raises Not_found

if the index is invalid. If the index is negative, it will get element starting from the end of the list.

val set_at_idx : int -> 'a -> 'a t -> 'a t

Set i-th element (removes the old one), or does nothing if index is too high. If the index is negative, it will set element starting from the end of the list.

val insert_at_idx : int -> 'a -> 'a t -> 'a t

Insert at i-th position, between the two existing elements. If the index is too high, append at the end of the list. If the index is negative, it will insert element starting from the end of the list.

val remove_at_idx : int -> 'a t -> 'a t

Remove element at given index. Does nothing if the index is too high. If the index is negative, it will remove element starting from the end of the list.

Set Operators

Those operations maintain the invariant that the list does not contain duplicates (if it already satisfies it).

val add_nodup : eq:('a -> 'a -> bool) -> 'a -> 'a t -> 'a t

add_nodup x set adds x to set if it was not already present. Linear time.

since
0.11
val remove_one : eq:('a -> 'a -> bool) -> 'a -> 'a t -> 'a t

remove_one x set removes one occurrence of x from set. Linear time.

since
0.11
val mem : eq:('a -> 'a -> bool) -> 'a -> 'a t -> bool

Membership to the list. Linear time.

val subset : eq:('a -> 'a -> bool) -> 'a t -> 'a t -> bool

Test for inclusion.

val uniq : eq:('a -> 'a -> bool) -> 'a t -> 'a t

Remove duplicates w.r.t the equality predicate. Complexity is quadratic in the length of the list, but the order of elements is preserved. If you wish for a faster de-duplication but do not care about the order, use sort_uniq.

val union : eq:('a -> 'a -> bool) -> 'a t -> 'a t -> 'a t

List union. Complexity is product of length of inputs.

val inter : eq:('a -> 'a -> bool) -> 'a t -> 'a t -> 'a t

List intersection. Complexity is product of length of inputs.

Other Constructors

val range_by : step:int -> int -> int -> int t

range_by ~step i j iterates on integers from i to j included, where the difference between successive elements is step. Use a negative step for a decreasing list.

raises Invalid_argument

if step=0.

since
0.18
val range : int -> int -> int t

range i j iterates on integers from i to j included. It works both for decreasing and increasing ranges.

val range' : int -> int -> int t

Like range but the second bound is excluded. For instance range' 0 5 = [0;1;2;3;4].

val (--) : int -> int -> int t

Infix alias for range.

val (--^) : int -> int -> int t

Infix alias for range'.

since
0.17
val replicate : int -> 'a -> 'a t

Replicate the given element n times.

val repeat : int -> 'a t -> 'a t

Concatenate the list with itself n times.

Association Lists

module Assoc : sig ... end
val assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b

Like Assoc.get_exn.

since
2.0
val assoc_opt : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b option

Like Assoc.get.

since
1.5, but only
since
2.0 with labels
val assq_opt : 'a -> ('a * 'b) t -> 'b option

Safe version of assq.

since
1.5, but only
since
2.0 with labels
val mem_assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * _) t -> bool

Like Assoc.mem.

since
2.0
val remove_assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> ('a * 'b) t

Like Assoc.remove.

since
2.0

References on Lists

since
0.3.3
module Ref : sig ... end
module type MONAD = sig ... end
module Traverse : functor (M : MONAD) -> sig ... end

Conversions

val random : 'a random_gen -> 'a t random_gen
val random_non_empty : 'a random_gen -> 'a t random_gen
val random_len : int -> 'a random_gen -> 'a t random_gen
val random_choose : 'a t -> 'a random_gen

Randomly choose an element in the list.

raises Not_found

if the list is empty.

val random_sequence : 'a random_gen t -> 'a t random_gen
val to_string : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> ('a -> string) -> 'a t -> string

to_string ~start ~stop ~sep item_to_string l print l to a string using sep as a separator between elements of l.

since
NEXT_RELEASE
val to_seq : 'a t -> 'a sequence

Return a sequence of the elements of the list.

val of_seq : 'a sequence -> 'a t

Build a list from a given sequence. In the result, elements appear in the same order as they did in the source sequence.

val to_gen : 'a t -> 'a gen

Return a gen of the elements of the list.

val of_gen : 'a gen -> 'a t

Build a list from a given gen. In the result, elements appear in the same order as they did in the source gen.

val to_klist : 'a t -> 'a klist

Return a klist of the elements of the list.

val of_klist : 'a klist -> 'a t

Build a list from a given klist. In the result, elements appear in the same order as they did in the source klist.

Infix Operators

It is convenient to open CCList.Infix to access the infix operators without cluttering the scope too much.

since
0.16
module Infix : sig ... end

IO

val pp : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> 'a printer -> 'a t printer

Print the contents of a list.

\ No newline at end of file diff --git a/dev/containers/CCList/module-type-MONAD/index.html b/dev/containers/CCList/module-type-MONAD/index.html index 0f47f52b..3173b809 100644 --- a/dev/containers/CCList/module-type-MONAD/index.html +++ b/dev/containers/CCList/module-type-MONAD/index.html @@ -1,2 +1,2 @@ -MONAD (containers.CCList.MONAD)

Module type CCList.MONAD

Monadic Operations

type 'a t
val return : 'a -> 'a t

Monadic return.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

\ No newline at end of file +MONAD (containers.CCList.MONAD)

Module type CCList.MONAD

Monadic Operations

type 'a t
val return : 'a -> 'a t

Monadic return.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

\ No newline at end of file diff --git a/dev/containers/CCListLabels.odoc b/dev/containers/CCListLabels.odoc deleted file mode 100644 index ab3408b07129e867473243012999ab82af955d4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21796 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 HknsNjtX#y^ diff --git a/dev/containers.thread/CCThread/.jbuilder-keep b/dev/containers/CCListLabels/.dune-keep similarity index 100% rename from dev/containers.thread/CCThread/.jbuilder-keep rename to dev/containers/CCListLabels/.dune-keep diff --git a/dev/containers/CCListLabels/Assoc/index.html b/dev/containers/CCListLabels/Assoc/index.html index b863148e..93609926 100644 --- a/dev/containers/CCListLabels/Assoc/index.html +++ b/dev/containers/CCListLabels/Assoc/index.html @@ -1,2 +1,2 @@ -Assoc (containers.CCListLabels.Assoc)

Module CCListLabels.Assoc

type ('a, 'b) t = ('a * 'b) list
val get : eq:('a -> 'a -> bool) -> 'a -> ('a'b) t -> 'b option

Find the element.

val get_exn : eq:('a -> 'a -> bool) -> 'a -> ('a'b) t -> 'b

Like get, but unsafe.

raises Not_found

if the element is not present.

val set : eq:('a -> 'a -> bool) -> 'a -> 'b -> ('a'b) t -> ('a'b) t

Add the binding into the list (erase it if already present).

val mem : eq:('a -> 'a -> bool) -> 'a -> ('a_) t -> bool

mem x l returns true iff x is a key in l.

since
0.16
val update : eq:('a -> 'a -> bool) -> f:('b option -> 'b option) -> 'a -> ('a'b) t -> ('a'b) t

update k ~f l updates l on the key k, by calling f (get l k) and removing k if it returns None, mapping k to v' if it returns Some v'.

since
0.16
val remove : eq:('a -> 'a -> bool) -> 'a -> ('a'b) t -> ('a'b) t

remove x l removes the first occurrence of k from l.

since
0.17
\ No newline at end of file +Assoc (containers.CCListLabels.Assoc)

Module CCListLabels.Assoc

type ('a, 'b) t = ('a * 'b) list
val get : eq:('a -> 'a -> bool) -> 'a -> ('a'b) t -> 'b option

Find the element.

val get_exn : eq:('a -> 'a -> bool) -> 'a -> ('a'b) t -> 'b

Like get, but unsafe.

raises Not_found

if the element is not present.

val set : eq:('a -> 'a -> bool) -> 'a -> 'b -> ('a'b) t -> ('a'b) t

Add the binding into the list (erase it if already present).

val mem : eq:('a -> 'a -> bool) -> 'a -> ('a_) t -> bool

mem x l returns true iff x is a key in l.

since
0.16
val update : eq:('a -> 'a -> bool) -> f:('b option -> 'b option) -> 'a -> ('a'b) t -> ('a'b) t

update k ~f l updates l on the key k, by calling f (get l k) and removing k if it returns None, mapping k to v' if it returns Some v'.

since
0.16
val remove : eq:('a -> 'a -> bool) -> 'a -> ('a'b) t -> ('a'b) t

remove x l removes the first occurrence of k from l.

since
0.17
\ No newline at end of file diff --git a/dev/containers/CCListLabels/Infix/index.html b/dev/containers/CCListLabels/Infix/index.html index a476e811..b5477769 100644 --- a/dev/containers/CCListLabels/Infix/index.html +++ b/dev/containers/CCListLabels/Infix/index.html @@ -1,2 +1,2 @@ -Infix (containers.CCListLabels.Infix)

Module CCListLabels.Infix

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Infix version of map with reversed arguments.

val (@) : 'a t -> 'a t -> 'a t

As append. Concatenate two lists.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

funs <*> l is product (fun f x -> f x) funs l.

val (<$>) : ('a -> 'b) -> 'a t -> 'b t

As map.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

l >>= f is flat_map f l.

val (--) : int -> int -> int t

Infix alias for range. Bounds included.

val (--^) : int -> int -> int t

Infix alias for range'. Second bound excluded.

\ No newline at end of file +Infix (containers.CCListLabels.Infix)

Module CCListLabels.Infix

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Infix version of map with reversed arguments.

val (@) : 'a t -> 'a t -> 'a t

As append. Concatenate two lists.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

funs <*> l is product (fun f x -> f x) funs l.

val (<$>) : ('a -> 'b) -> 'a t -> 'b t

As map.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

l >>= f is flat_map f l.

val (--) : int -> int -> int t

Infix alias for range. Bounds included.

val (--^) : int -> int -> int t

Infix alias for range'. Second bound excluded.

\ No newline at end of file diff --git a/dev/containers/CCListLabels/Ref/index.html b/dev/containers/CCListLabels/Ref/index.html index 6800d63f..5d9fe895 100644 --- a/dev/containers/CCListLabels/Ref/index.html +++ b/dev/containers/CCListLabels/Ref/index.html @@ -1,2 +1,2 @@ -Ref (containers.CCListLabels.Ref)

Module CCListLabels.Ref

type 'a t = 'a list Pervasives.ref
val push : 'a t -> 'a -> unit
val pop : 'a t -> 'a option
val pop_exn : 'a t -> 'a

Unsafe version of pop.

raises Failure

if the list is empty.

val create : unit -> 'a t

Create a new list reference.

val clear : _ t -> unit

Remove all elements.

val lift : ('a list -> 'b) -> 'a t -> 'b

Apply a list function to the content.

val push_list : 'a t -> 'a list -> unit

Add elements of the list at the beginning of the list ref. Elements at the end of the list will be at the beginning of the list ref.

\ No newline at end of file +Ref (containers.CCListLabels.Ref)

Module CCListLabels.Ref

type 'a t = 'a list Pervasives.ref
val push : 'a t -> 'a -> unit
val pop : 'a t -> 'a option
val pop_exn : 'a t -> 'a

Unsafe version of pop.

raises Failure

if the list is empty.

val create : unit -> 'a t

Create a new list reference.

val clear : _ t -> unit

Remove all elements.

val lift : ('a list -> 'b) -> 'a t -> 'b

Apply a list function to the content.

val push_list : 'a t -> 'a list -> unit

Add elements of the list at the beginning of the list ref. Elements at the end of the list will be at the beginning of the list ref.

\ No newline at end of file diff --git a/dev/containers/CCListLabels/Traverse/argument-1-M/index.html b/dev/containers/CCListLabels/Traverse/argument-1-M/index.html index 65e681cf..d6895308 100644 --- a/dev/containers/CCListLabels/Traverse/argument-1-M/index.html +++ b/dev/containers/CCListLabels/Traverse/argument-1-M/index.html @@ -1,2 +1,2 @@ -1-M (containers.CCListLabels.Traverse.1-M)

Parameter Traverse.1-M

type 'a t
val return : 'a -> 'a t

Monadic return.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

\ No newline at end of file +1-M (containers.CCListLabels.Traverse.1-M)

Parameter Traverse.1-M

type 'a t
val return : 'a -> 'a t

Monadic return.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

\ No newline at end of file diff --git a/dev/containers/CCListLabels/Traverse/index.html b/dev/containers/CCListLabels/Traverse/index.html index f2e38b53..6d4de670 100644 --- a/dev/containers/CCListLabels/Traverse/index.html +++ b/dev/containers/CCListLabels/Traverse/index.html @@ -1,2 +1,2 @@ -Traverse (containers.CCListLabels.Traverse)

Module CCListLabels.Traverse

Parameters

Signature

val sequence_m : 'a M.t t -> 'a t M.t
val fold_m : f:('b -> 'a -> 'b M.t) -> init:'b -> 'a t -> 'b M.t
val map_m : f:('a -> 'b M.t) -> 'a t -> 'b t M.t
val map_m_par : f:('a -> 'b M.t) -> 'a t -> 'b t M.t

Like map_m but map_m_par f (x::l) evaluates f x and f l "in parallel" before combining their result (for instance in Lwt).

\ No newline at end of file +Traverse (containers.CCListLabels.Traverse)

Module CCListLabels.Traverse

Parameters

Signature

val sequence_m : 'a M.t t -> 'a t M.t
val fold_m : f:('b -> 'a -> 'b M.t) -> init:'b -> 'a t -> 'b M.t
val map_m : f:('a -> 'b M.t) -> 'a t -> 'b t M.t
val map_m_par : f:('a -> 'b M.t) -> 'a t -> 'b t M.t

Like map_m but map_m_par f (x::l) evaluates f x and f l "in parallel" before combining their result (for instance in Lwt).

\ No newline at end of file diff --git a/dev/containers/CCListLabels/index.html b/dev/containers/CCListLabels/index.html index 8322b385..79f82d6b 100644 --- a/dev/containers/CCListLabels/index.html +++ b/dev/containers/CCListLabels/index.html @@ -1,6 +1,6 @@ -CCListLabels (containers.CCListLabels)

Module CCListLabels

Complements to list

type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a printer = Format.formatter -> 'a -> unit
type 'a random_gen = Random.State.t -> 'a
include module type of ListLabels
val length : 'a list -> int
val hd : 'a list -> 'a
val compare_lengths : 'a list -> 'b list -> int
val compare_length_with : 'a list -> len:int -> int
val cons : 'a -> 'a list -> 'a list
val tl : 'a list -> 'a list
val nth : 'a list -> int -> 'a
val nth_opt : 'a list -> int -> 'a option
val rev : 'a list -> 'a list
val init : len:int -> f:(int -> 'a) -> 'a list
val append : 'a list -> 'a list -> 'a list
val rev_append : 'a list -> 'a list -> 'a list
val concat : 'a list list -> 'a list
val flatten : 'a list list -> 'a list
val iter : f:('a -> unit) -> 'a list -> unit
val iteri : f:(int -> 'a -> unit) -> 'a list -> unit
val map : f:('a -> 'b) -> 'a list -> 'b list
val mapi : f:(int -> 'a -> 'b) -> 'a list -> 'b list
val rev_map : f:('a -> 'b) -> 'a list -> 'b list
val fold_left : f:('a -> 'b -> 'a) -> init:'a -> 'b list -> 'a
val fold_right : f:('a -> 'b -> 'b) -> 'a list -> init:'b -> 'b
val iter2 : f:('a -> 'b -> unit) -> 'a list -> 'b list -> unit
val map2 : f:('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list
val rev_map2 : f:('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list
val fold_left2 : f:('a -> 'b -> 'c -> 'a) -> init:'a -> 'b list -> 'c list -> 'a
val fold_right2 : f:('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> init:'c -> 'c
val for_all : f:('a -> bool) -> 'a list -> bool
val exists : f:('a -> bool) -> 'a list -> bool
val for_all2 : f:('a -> 'b -> bool) -> 'a list -> 'b list -> bool
val exists2 : f:('a -> 'b -> bool) -> 'a list -> 'b list -> bool
val mem : 'a -> set:'a list -> bool
val memq : 'a -> set:'a list -> bool
val find : f:('a -> bool) -> 'a list -> 'a
val find_opt : f:('a -> bool) -> 'a list -> 'a option
val filter : f:('a -> bool) -> 'a list -> 'a list
val find_all : f:('a -> bool) -> 'a list -> 'a list
val partition : f:('a -> bool) -> 'a list -> 'a list * 'a list
val assoc : 'a -> ('a * 'b) list -> 'b
val assoc_opt : 'a -> ('a * 'b) list -> 'b option
val assq : 'a -> ('a * 'b) list -> 'b
val assq_opt : 'a -> ('a * 'b) list -> 'b option
val mem_assoc : 'a -> map:('a * 'b) list -> bool
val mem_assq : 'a -> map:('a * 'b) list -> bool
val remove_assoc : 'a -> ('a * 'b) list -> ('a * 'b) list
val remove_assq : 'a -> ('a * 'b) list -> ('a * 'b) list
val split : ('a * 'b) list -> 'a list * 'b list
val combine : 'a list -> 'b list -> ('a * 'b) list
val sort : cmp:('a -> 'a -> int) -> 'a list -> 'a list
val stable_sort : cmp:('a -> 'a -> int) -> 'a list -> 'a list
val fast_sort : cmp:('a -> 'a -> int) -> 'a list -> 'a list
val sort_uniq : cmp:('a -> 'a -> int) -> 'a list -> 'a list
val merge : cmp:('a -> 'a -> int) -> 'a list -> 'a list -> 'a list
type 'a t = 'a list
val empty : 'a t

empty is [].

val is_empty : _ t -> bool

is_empty l returns true iff l = [].

since
0.11
val map : f:('a -> 'b) -> 'a t -> 'b t

Safe version of List.map.

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Infix version of map with reversed arguments.

since
0.5
val cons : 'a -> 'a t -> 'a t

cons x l is x::l.

since
0.12
val append : 'a t -> 'a t -> 'a t

Safe version of List.append. Concatenate two lists.

val cons_maybe : 'a option -> 'a t -> 'a t

cons_maybe (Some x) l is x :: l. cons_maybe None l is l.

since
0.13
val (@) : 'a t -> 'a t -> 'a t

Like append. Concatenate two lists.

val filter : f:('a -> bool) -> 'a t -> 'a t

Safe version of List.filter. filter p l returns all the elements of the list l that satisfy the predicate p. The order of the elements in the input list is preserved.

val fold_right : f:('a -> 'b -> 'b) -> 'a t -> init:'b -> 'b

Safe version of fold_right. fold_right f [a1; ...; an] b is f a1 (f a2 (... (f an b) ...)).

val fold_while : f:('a -> 'b -> 'a * [ `Stop | `Continue ]) -> init:'a -> 'b t -> 'a

Fold until a stop condition via ('a, `Stop) is indicated by the accumulator.

since
0.8
val fold_map : f:('acc -> 'a -> 'acc * 'b) -> init:'acc -> 'a list -> 'acc * 'b list

fold_map ~f ~init l is a fold_left-like function, but it also maps the list to another list.

since
0.14
val scan_left : f:('acc -> 'a -> 'acc) -> init:'acc -> 'a list -> 'acc list

scan_left ~f ~init l returns the list [init; f init x0; f (f init x0) x1; ...] where x0, x1, etc. are the elements of l.

since
1.2, but only
since
2.2 with labels
val fold_map2 : f:('acc -> 'a -> 'b -> 'acc * 'c) -> init:'acc -> 'a list -> 'b list -> 'acc * 'c list

fold_map2 is to fold_map what List.map2 is to List.map.

raises Invalid_argument

if the lists do not have the same length.

since
0.16
val fold_filter_map : f:('acc -> 'a -> 'acc * 'b option) -> init:'acc -> 'a list -> 'acc * 'b list

fold_filter_map ~f ~init l is a fold_left-like function, but also generates a list of output in a way similar to filter_map.

since
0.17
val fold_flat_map : f:('acc -> 'a -> 'acc * 'b list) -> init:'acc -> 'a list -> 'acc * 'b list

fold_flat_map f acc l is a fold_left-like function, but it also maps the list to a list of lists that is then flatten'd.

since
0.14
val count : f:('a -> bool) -> 'a list -> int

count p l counts how many elements of l satisfy predicate p.

since
1.5, but only
since
2.2 with labels
val count_true_false : f:('a -> bool) -> 'a list -> int * int
since
2.4
val init : int -> f:(int -> 'a) -> 'a t

init len ~f is f 0; f 1; ...; f (len-1).

raises Invalid_argument

if len < 0.

since
0.6
val combine : 'a list -> 'b list -> ('a * 'b) list

Like List.combine but tail-recursive. Transform a pair of lists into a list of pairs: combine [a1; ...; an] [b1; ...; bn] is [(a1,b1); ...; (an,bn)].

raises Invalid_argument

if the lists have distinct lengths.

since
1.2, but only
since
2.2 with labels
val combine_gen : 'a list -> 'b list -> ('a * 'b) gen

Lazy version of combine. Unlike combine, it does not fail if the lists have different lengths; instead, the output has as many pairs as the smallest input list.

since
1.2, but only
since
2.2 with labels
val split : ('a * 'b) t -> 'a t * 'b t

A tail-recursive version of List.split. Transform a list of pairs into a pair of lists: split [(a1,b1); ...; (an,bn)] is ([a1; ...; an], [b1; ...; bn]).

since
1.2, but only
since
2.2 with labels
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
val compare_lengths : 'a t -> 'b t -> int

Equivalent to compare (length l1) (length l2) but more efficient. Compare the lengths of two lists.

since
1.5, but only
since
2.2 with labels
val compare_length_with : 'a t -> int -> int

Equivalent to compare (length l) x but more efficient. Compare the length of a list to an integer.

since
1.5, but only
since
2.2 with labels
val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
val flat_map : f:('a -> 'b t) -> 'a t -> 'b t

Map and flatten at the same time (safe). Evaluation order is not guaranteed.

val flatten : 'a t t -> 'a t

Safe flatten. Concatenate a list of lists.

val product : f:('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t

Cartesian product of the two lists, with the given combinator.

val fold_product : f:('c -> 'a -> 'b -> 'c) -> init:'c -> 'a t -> 'b t -> 'c

Fold on the cartesian product.

val cartesian_product : 'a t t -> 'a t t

Produce the cartesian product of this list of lists, by returning all the ways of picking one element per sublist. NOTE the order of the returned list is unspecified. For example:

# cartesian_product [[1;2];[3];[4;5;6]] |> sort =
+CCListLabels (containers.CCListLabels)

Module CCListLabels

Complements to list

type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a printer = Format.formatter -> 'a -> unit
type 'a random_gen = Random.State.t -> 'a
include module type of ListLabels
val length : 'a list -> int
val hd : 'a list -> 'a
val compare_lengths : 'a list -> 'b list -> int
val compare_length_with : 'a list -> len:int -> int
val cons : 'a -> 'a list -> 'a list
val tl : 'a list -> 'a list
val nth : 'a list -> int -> 'a
val nth_opt : 'a list -> int -> 'a option
val rev : 'a list -> 'a list
val init : len:int -> f:(int -> 'a) -> 'a list
val append : 'a list -> 'a list -> 'a list
val rev_append : 'a list -> 'a list -> 'a list
val concat : 'a list list -> 'a list
val flatten : 'a list list -> 'a list
val iter : f:('a -> unit) -> 'a list -> unit
val iteri : f:(int -> 'a -> unit) -> 'a list -> unit
val map : f:('a -> 'b) -> 'a list -> 'b list
val mapi : f:(int -> 'a -> 'b) -> 'a list -> 'b list
val rev_map : f:('a -> 'b) -> 'a list -> 'b list
val fold_left : f:('a -> 'b -> 'a) -> init:'a -> 'b list -> 'a
val fold_right : f:('a -> 'b -> 'b) -> 'a list -> init:'b -> 'b
val iter2 : f:('a -> 'b -> unit) -> 'a list -> 'b list -> unit
val map2 : f:('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list
val rev_map2 : f:('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list
val fold_left2 : f:('a -> 'b -> 'c -> 'a) -> init:'a -> 'b list -> 'c list -> 'a
val fold_right2 : f:('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> init:'c -> 'c
val for_all : f:('a -> bool) -> 'a list -> bool
val exists : f:('a -> bool) -> 'a list -> bool
val for_all2 : f:('a -> 'b -> bool) -> 'a list -> 'b list -> bool
val exists2 : f:('a -> 'b -> bool) -> 'a list -> 'b list -> bool
val mem : 'a -> set:'a list -> bool
val memq : 'a -> set:'a list -> bool
val find : f:('a -> bool) -> 'a list -> 'a
val find_opt : f:('a -> bool) -> 'a list -> 'a option
val filter : f:('a -> bool) -> 'a list -> 'a list
val find_all : f:('a -> bool) -> 'a list -> 'a list
val partition : f:('a -> bool) -> 'a list -> 'a list * 'a list
val assoc : 'a -> ('a * 'b) list -> 'b
val assoc_opt : 'a -> ('a * 'b) list -> 'b option
val assq : 'a -> ('a * 'b) list -> 'b
val assq_opt : 'a -> ('a * 'b) list -> 'b option
val mem_assoc : 'a -> map:('a * 'b) list -> bool
val mem_assq : 'a -> map:('a * 'b) list -> bool
val remove_assoc : 'a -> ('a * 'b) list -> ('a * 'b) list
val remove_assq : 'a -> ('a * 'b) list -> ('a * 'b) list
val split : ('a * 'b) list -> 'a list * 'b list
val combine : 'a list -> 'b list -> ('a * 'b) list
val sort : cmp:('a -> 'a -> int) -> 'a list -> 'a list
val stable_sort : cmp:('a -> 'a -> int) -> 'a list -> 'a list
val fast_sort : cmp:('a -> 'a -> int) -> 'a list -> 'a list
val sort_uniq : cmp:('a -> 'a -> int) -> 'a list -> 'a list
val merge : cmp:('a -> 'a -> int) -> 'a list -> 'a list -> 'a list
type 'a t = 'a list
val empty : 'a t

empty is [].

val is_empty : _ t -> bool

is_empty l returns true iff l = [].

since
0.11
val map : f:('a -> 'b) -> 'a t -> 'b t

Safe version of List.map.

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Infix version of map with reversed arguments.

since
0.5
val cons : 'a -> 'a t -> 'a t

cons x l is x::l.

since
0.12
val append : 'a t -> 'a t -> 'a t

Safe version of List.append. Concatenate two lists.

val cons_maybe : 'a option -> 'a t -> 'a t

cons_maybe (Some x) l is x :: l. cons_maybe None l is l.

since
0.13
val (@) : 'a t -> 'a t -> 'a t

Like append. Concatenate two lists.

val filter : f:('a -> bool) -> 'a t -> 'a t

Safe version of List.filter. filter p l returns all the elements of the list l that satisfy the predicate p. The order of the elements in the input list is preserved.

val fold_right : f:('a -> 'b -> 'b) -> 'a t -> init:'b -> 'b

Safe version of fold_right. fold_right f [a1; ...; an] b is f a1 (f a2 (... (f an b) ...)).

val fold_while : f:('a -> 'b -> 'a * [ `Stop | `Continue ]) -> init:'a -> 'b t -> 'a

Fold until a stop condition via ('a, `Stop) is indicated by the accumulator.

since
0.8
val fold_map : f:('acc -> 'a -> 'acc * 'b) -> init:'acc -> 'a list -> 'acc * 'b list

fold_map ~f ~init l is a fold_left-like function, but it also maps the list to another list.

since
0.14
val scan_left : f:('acc -> 'a -> 'acc) -> init:'acc -> 'a list -> 'acc list

scan_left ~f ~init l returns the list [init; f init x0; f (f init x0) x1; ...] where x0, x1, etc. are the elements of l.

since
1.2, but only
since
2.2 with labels
val fold_map2 : f:('acc -> 'a -> 'b -> 'acc * 'c) -> init:'acc -> 'a list -> 'b list -> 'acc * 'c list

fold_map2 is to fold_map what List.map2 is to List.map.

raises Invalid_argument

if the lists do not have the same length.

since
0.16
val fold_filter_map : f:('acc -> 'a -> 'acc * 'b option) -> init:'acc -> 'a list -> 'acc * 'b list

fold_filter_map ~f ~init l is a fold_left-like function, but also generates a list of output in a way similar to filter_map.

since
0.17
val fold_flat_map : f:('acc -> 'a -> 'acc * 'b list) -> init:'acc -> 'a list -> 'acc * 'b list

fold_flat_map f acc l is a fold_left-like function, but it also maps the list to a list of lists that is then flatten'd.

since
0.14
val count : f:('a -> bool) -> 'a list -> int

count p l counts how many elements of l satisfy predicate p.

since
1.5, but only
since
2.2 with labels
val count_true_false : f:('a -> bool) -> 'a list -> int * int
since
2.4
val init : int -> f:(int -> 'a) -> 'a t

init len ~f is f 0; f 1; ...; f (len-1).

raises Invalid_argument

if len < 0.

since
0.6
val combine : 'a list -> 'b list -> ('a * 'b) list

Like List.combine but tail-recursive. Transform a pair of lists into a list of pairs: combine [a1; ...; an] [b1; ...; bn] is [(a1,b1); ...; (an,bn)].

raises Invalid_argument

if the lists have distinct lengths.

since
1.2, but only
since
2.2 with labels
val combine_gen : 'a list -> 'b list -> ('a * 'b) gen

Lazy version of combine. Unlike combine, it does not fail if the lists have different lengths; instead, the output has as many pairs as the smallest input list.

since
1.2, but only
since
2.2 with labels
val split : ('a * 'b) t -> 'a t * 'b t

A tail-recursive version of List.split. Transform a list of pairs into a pair of lists: split [(a1,b1); ...; (an,bn)] is ([a1; ...; an], [b1; ...; bn]).

since
1.2, but only
since
2.2 with labels
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
val compare_lengths : 'a t -> 'b t -> int

Equivalent to compare (length l1) (length l2) but more efficient. Compare the lengths of two lists.

since
1.5, but only
since
2.2 with labels
val compare_length_with : 'a t -> int -> int

Equivalent to compare (length l) x but more efficient. Compare the length of a list to an integer.

since
1.5, but only
since
2.2 with labels
val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
val flat_map : f:('a -> 'b t) -> 'a t -> 'b t

Map and flatten at the same time (safe). Evaluation order is not guaranteed.

val flatten : 'a t t -> 'a t

Safe flatten. Concatenate a list of lists.

val product : f:('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t

Cartesian product of the two lists, with the given combinator.

val fold_product : f:('c -> 'a -> 'b -> 'c) -> init:'c -> 'a t -> 'b t -> 'c

Fold on the cartesian product.

val cartesian_product : 'a t t -> 'a t t

Produce the cartesian product of this list of lists, by returning all the ways of picking one element per sublist. NOTE the order of the returned list is unspecified. For example:

# cartesian_product [[1;2];[3];[4;5;6]] |> sort =
 [[1;3;4];[1;3;5];[1;3;6];[2;3;4];[2;3;5];[2;3;6]];;
 # cartesian_product [[1;2];[];[4;5;6]] = [];;
 # cartesian_product [[1;2];[3];[4];[5];[6]] |> sort =
-[[1;3;4;5;6];[2;3;4;5;6]];;

invariant: cartesian_product l = map_product id l.

since
1.2, but only
since
2.2 with labels
val map_product_l : f:('a -> 'b list) -> 'a list -> 'b list list

map_product_l f l maps each element of l to a list of objects of type 'b using f. We obtain [l1;l2;...;ln] where length l=n and li : 'b list. Then, it returns all the ways of picking exactly one element per li.

since
1.2, but only
since
2.2 with labels
val diagonal : 'a t -> ('a * 'a) t

All pairs of distinct positions of the list. list_diagonal l will return the list of List.nth i l, List.nth j l if i < j.

val partition_map : f:('a -> [< `Left of 'b | `Right of 'c | `Drop ]) -> 'a list -> 'b list * 'c list

partition_map ~f l maps f on l and gather results in lists:

  • if f x = `Left y, adds y to the first list.
  • if f x = `Right z, adds z to the second list.
  • if f x = `Drop, ignores x.
since
0.11
val group_by : ?⁠hash:('a -> int) -> ?⁠eq:('a -> 'a -> bool) -> 'a t -> 'a list t

Group equal elements, regardless of their order of appearance. precondition: for any x and y, if eq x y then hash x=hash y must hold.

since
2.3
val join : join_row:('a -> 'b -> 'c option) -> 'a t -> 'b t -> 'c t

join ~join_row a b combines every element of a with every element of b using join_row. If join_row returns None, then the two elements do not combine. Assume that b allows for multiple iterations.

since
2.3
val join_by : ?⁠eq:('key -> 'key -> bool) -> ?⁠hash:('key -> int) -> ('a -> 'key) -> ('b -> 'key) -> merge:('key -> 'a -> 'b -> 'c option) -> 'a t -> 'b t -> 'c t

join key1 key2 ~merge is a binary operation that takes two sequences a and b, projects their elements resp. with key1 and key2, and combine values (x,y) from (a,b) with the same key using merge. If merge returns None, the combination of values is discarded. precondition: for any x and y, if eq x y then hash x=hash y must hold.

since
2.3
val join_all_by : ?⁠eq:('key -> 'key -> bool) -> ?⁠hash:('key -> int) -> ('a -> 'key) -> ('b -> 'key) -> merge:('key -> 'a list -> 'b list -> 'c option) -> 'a t -> 'b t -> 'c t

join_all_by key1 key2 ~merge is a binary operation that takes two sequences a and b, projects their elements resp. with key1 and key2, and, for each key k occurring in at least one of them:

  • compute the list l1 of elements of a that map to k
  • compute the list l2 of elements of b that map to k
  • call merge k l1 l2. If merge returns None, the combination of values is discarded, otherwise it returns Some c and c is inserted in the result.
since
2.3
val group_join_by : ?⁠eq:('a -> 'a -> bool) -> ?⁠hash:('a -> int) -> ('b -> 'a) -> 'a t -> 'b t -> ('a * 'b list) t

group_join_by key2 associates to every element x of the first sequence, all the elements y of the second sequence such that eq x (key y). Elements of the first sequences without corresponding values in the second one are mapped to [] precondition: for any x and y, if eq x y then hash x=hash y must hold.

since
2.3
val sublists_of_len : ?⁠last:('a list -> 'a list option) -> ?⁠offset:int -> len:int -> 'a list -> 'a list list

sublists_of_len n l returns sub-lists of l that have length n. By default, these sub-lists are non overlapping: sublists_of_len 2 [1;2;3;4;5;6] returns [1;2]; [3;4]; [5;6].

Examples:

  • sublists_of_len 2 [1;2;3;4;5;6] = [[1;2]; [3;4]; [5;6]].
  • sublists_of_len 2 ~offset:3 [1;2;3;4;5;6] = [1;2];[4;5].
  • sublists_of_len 3 ~last:CCOpt.return [1;2;3;4] = [1;2;3];[4].
  • sublists_of_len 2 [1;2;3;4;5] = [[1;2]; [3;4]].
parameter offset

the number of elements skipped between two consecutive sub-lists. By default it is n. If offset < n, the sub-lists will overlap; if offset > n, some elements will not appear at all.

parameter last

if provided and the last group of elements g is such that length g < n, last g is called. If last g = Some g', g' is appended; otherwise g is dropped. If last = CCOpt.return, it will simply keep the last group. By default, last = fun _ -> None, i.e. the last group is dropped if shorter than n.

raises Invalid_argument

if offset <= 0 or n <= 0. See CCList.sublists_of_len for more details.

since
1.0, but only
since
1.5 with labels
val intersperse : x:'a -> 'a list -> 'a list

Insert the first argument between every element of the list.

since
2.1, but only
since
2.2 with labels
val interleave : 'a list -> 'a list -> 'a list

interleave [x1…xn] [y1…ym] is x1,y1,x2,y2,… and finishes with the suffix of the longest list.

since
2.1, but only
since
2.2 with labels
val pure : 'a -> 'a t

pure is return.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

funs <*> l is product (fun f x -> f x) funs l.

val (<$>) : ('a -> 'b) -> 'a t -> 'b t

(<$>) is map.

val return : 'a -> 'a t

return x is x.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

l >>= f is flat_map f l.

val take : int -> 'a t -> 'a t

Take the n first elements, drop the rest.

val drop : int -> 'a t -> 'a t

Drop the n first elements, keep the rest.

val hd_tl : 'a t -> 'a * 'a t

hd_tl (x :: l) returns hd, l.

raises Failure

if the list is empty.

since
0.16
val take_drop : int -> 'a t -> 'a t * 'a t

take_drop n l returns l1, l2 such that l1 @ l2 = l and length l1 = min (length l) n.

val take_while : f:('a -> bool) -> 'a t -> 'a t

take_while ~f l returns the longest prefix of l for which f is true.

since
0.13
val drop_while : f:('a -> bool) -> 'a t -> 'a t

drop_while ~f l drops the longest prefix of l for which f is true.

since
0.13
val take_drop_while : f:('a -> bool) -> 'a t -> 'a t * 'a t

take_drop_while p l = take_while p l, drop_while p l.

since
1.2, but only
since
2.2 with labels
val last : int -> 'a t -> 'a t

last n l takes the last n elements of l (or less if l doesn't have that many elements).

val head_opt : 'a t -> 'a option

First element.

since
0.20
val tail_opt : 'a t -> 'a t option

Return the given list without its first element.

since
2.0
val last_opt : 'a t -> 'a option

Last element.

since
0.20
val find_pred : f:('a -> bool) -> 'a t -> 'a option

find_pred p l finds the first element of l that satisfies p, or returns None if no element satisfies p.

since
0.11
val find_opt : f:('a -> bool) -> 'a t -> 'a option

Safe version of find.

since
1.5, but only
since
2.2 with labels
val find_pred_exn : f:('a -> bool) -> 'a t -> 'a

Unsafe version of find_pred.

raises Not_found

if no such element is found.

since
0.11
val find_map : f:('a -> 'b option) -> 'a t -> 'b option

find_map ~f l traverses l, applying f to each element. If for some element x, f x = Some y, then Some y is returned. Otherwise the call returns None.

since
0.11
val find_mapi : f:(int -> 'a -> 'b option) -> 'a t -> 'b option

Like find_map, but also pass the index to the predicate function.

since
0.11
val find_idx : f:('a -> bool) -> 'a t -> (int * 'a) option

find_idx p x returns Some (i,x) where x is the i-th element of l, and p x holds. Otherwise returns None.

val remove : eq:('a -> 'a -> bool) -> key:'a -> 'a t -> 'a t

remove ~key l removes every instance of key from l. Tail-recursive.

parameter eq

equality function.

since
0.11
val filter_map : f:('a -> 'b option) -> 'a t -> 'b t

filter_map ~f l is the sublist of l containing only elements for which f returns Some e. Map and remove elements at the same time.

val keep_some : 'a option t -> 'a t

keep_some l retains only elements of the form Some x. Like filter_map CCFun.id.

since
1.3, but only
since
2.2 with labels
val keep_ok : ('a_) Result.result t -> 'a t

keep_ok l retains only elements of the form Ok x.

since
1.3, but only
since
2.2 with labels
val all_some : 'a option t -> 'a t option

all_some l returns Some l' if all elements of l are of the form Some x, or None otherwise.

since
1.3, but only
since
2.2 with labels
val all_ok : ('a'err) Result.result t -> ('a t'err) Result.result

all_ok l returns Ok l' if all elements of l are of the form Ok x, or Error e otherwise (with the first error met).

since
1.3, but only
since
2.2 with labels
val sorted_merge : cmp:('a -> 'a -> int) -> 'a list -> 'a list -> 'a list

Merge elements from both sorted list.

val sort_uniq : cmp:('a -> 'a -> int) -> 'a list -> 'a list

Sort the list and remove duplicate elements.

val sorted_merge_uniq : cmp:('a -> 'a -> int) -> 'a list -> 'a list -> 'a list

sorted_merge_uniq l1 l2 merges the sorted lists l1 and l2 and removes duplicates.

since
0.10
val is_sorted : cmp:('a -> 'a -> int) -> 'a list -> bool

is_sorted l returns true iff l is sorted (according to given order).

parameter cmp

the comparison function (default Pervasives.compare).

since
0.17
val sorted_insert : cmp:('a -> 'a -> int) -> ?⁠uniq:bool -> 'a -> 'a list -> 'a list

sorted_insert x l inserts x into l such that, if l was sorted, then sorted_insert x l is sorted too.

parameter uniq

if true and x is already in sorted position in l, then x is not duplicated. Default false (x will be inserted in any case).

since
0.17
val uniq_succ : eq:('a -> 'a -> bool) -> 'a list -> 'a list

uniq_succ l removes duplicate elements that occur one next to the other. Examples: uniq_succ [1;2;1] = [1;2;1]. uniq_succ [1;1;2] = [1;2].

since
0.10
val group_succ : eq:('a -> 'a -> bool) -> 'a list -> 'a list list

group_succ ~eq l groups together consecutive elements that are equal according to eq.

since
0.11

Indices

val mapi : f:(int -> 'a -> 'b) -> 'a t -> 'b t

Like map, but the function is applied to the index of the element as first argument (counting from 0), and the element itself as second argument.

val iteri : f:(int -> 'a -> unit) -> 'a t -> unit

Like iter, but the function is applied to the index of the element as first argument (counting from 0), and the element itself as second argument.

val iteri2 : f:(int -> 'a -> 'b -> unit) -> 'a t -> 'b t -> unit

Iter on two lists.

raises Invalid_argument

when lists do not have the same length.

since
2.0, but only
since
2.2 with labels
val foldi : f:('b -> int -> 'a -> 'b) -> init:'b -> 'a t -> 'b

Like fold but it also passes in the index of each element to the folded function. Tail-recursive.

val foldi2 : f:('c -> int -> 'a -> 'b -> 'c) -> init:'c -> 'a t -> 'b t -> 'c

Fold on two lists, with index.

raises Invalid_argument

when lists do not have the same length.

since
2.0, but only
since
2.2 with labels
val get_at_idx : int -> 'a t -> 'a option

Get by index in the list. If the index is negative, it will get element starting from the end of the list.

val nth_opt : 'a t -> int -> 'a option

Safe version of nth.

raises Invalid_argument

if the int is negative.

since
1.5, but only
since
2.2 with labels
val get_at_idx_exn : int -> 'a t -> 'a

Get the i-th element, or

raises Not_found

if the index is invalid. If the index is negative, it will get element starting from the end of the list.

val set_at_idx : int -> 'a -> 'a t -> 'a t

Set i-th element (removes the old one), or does nothing if index is too high. If the index is negative, it will set element starting from the end of the list.

val insert_at_idx : int -> 'a -> 'a t -> 'a t

Insert at i-th position, between the two existing elements. If the index is too high, append at the end of the list. If the index is negative, it will insert element starting from the end of the list.

val remove_at_idx : int -> 'a t -> 'a t

Remove element at given index. Does nothing if the index is too high. If the index is negative, it will remove element starting from the end of the list.

Set Operators

Those operations maintain the invariant that the list does not contain duplicates (if it already satisfies it).

val add_nodup : eq:('a -> 'a -> bool) -> 'a -> 'a t -> 'a t

add_nodup x set adds x to set if it was not already present. Linear time.

since
0.11
val remove_one : eq:('a -> 'a -> bool) -> 'a -> 'a t -> 'a t

remove_one x set removes one occurrence of x from set. Linear time.

since
0.11
val mem : eq:('a -> 'a -> bool) -> 'a -> 'a t -> bool

Membership to the list. Linear time.

val subset : eq:('a -> 'a -> bool) -> 'a t -> 'a t -> bool

Test for inclusion.

val uniq : eq:('a -> 'a -> bool) -> 'a t -> 'a t

Remove duplicates w.r.t the equality predicate. Complexity is quadratic in the length of the list, but the order of elements is preserved. If you wish for a faster de-duplication but do not care about the order, use sort_uniq.

val union : eq:('a -> 'a -> bool) -> 'a t -> 'a t -> 'a t

List union. Complexity is product of length of inputs.

val inter : eq:('a -> 'a -> bool) -> 'a t -> 'a t -> 'a t

List intersection. Complexity is product of length of inputs.

Other Constructors

val range_by : step:int -> int -> int -> int t

range_by ~step i j iterates on integers from i to j included, where the difference between successive elements is step. Use a negative step for a decreasing list.

raises Invalid_argument

if step=0.

since
0.18
val range : int -> int -> int t

range i j iterates on integers from i to j included. It works both for decreasing and increasing ranges.

val range' : int -> int -> int t

Like range but the second bound is excluded. For instance range' 0 5 = [0;1;2;3;4].

val (--) : int -> int -> int t

Infix alias for range.

val (--^) : int -> int -> int t

Infix alias for range'.

since
0.17
val replicate : int -> 'a -> 'a t

Replicate the given element n times.

val repeat : int -> 'a t -> 'a t

Concatenate the list with itself n times.

Association Lists

module Assoc : sig ... end
val assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b

Like Assoc.get_exn.

since
2.0
val assoc_opt : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b option

Like Assoc.get.

since
1.5, but only
since
2.0 with labels
val assq_opt : 'a -> ('a * 'b) t -> 'b option

Safe version of assq.

since
1.5, but only
since
2.0 with labels
val mem_assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * _) t -> bool

Like Assoc.mem.

since
2.0
val remove_assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> ('a * 'b) t

Like Assoc.remove.

since
2.0

References on Lists

since
0.3.3
module Ref : sig ... end
module type MONAD = sig ... end
module Traverse : functor (M : MONAD) -> sig ... end

Conversions

val random : 'a random_gen -> 'a t random_gen
val random_non_empty : 'a random_gen -> 'a t random_gen
val random_len : int -> 'a random_gen -> 'a t random_gen
val random_choose : 'a t -> 'a random_gen

Randomly choose an element in the list.

raises Not_found

if the list is empty.

val random_sequence : 'a random_gen t -> 'a t random_gen
val to_seq : 'a t -> 'a sequence

Return a sequence of the elements of the list.

val of_seq : 'a sequence -> 'a t

Build a list from a given sequence. In the result, elements appear in the same order as they did in the source sequence.

val to_gen : 'a t -> 'a gen

Return a gen of the elements of the list.

val of_gen : 'a gen -> 'a t

Build a list from a given gen. In the result, elements appear in the same order as they did in the source gen.

val to_klist : 'a t -> 'a klist

Return a klist of the elements of the list.

val of_klist : 'a klist -> 'a t

Build a list from a given klist. In the result, elements appear in the same order as they did in the source klist.

Infix Operators

It is convenient to open CCList.Infix to access the infix operators without cluttering the scope too much.

since
0.16
module Infix : sig ... end

IO

val pp : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> 'a printer -> 'a t printer

Print the contents of a list.

\ No newline at end of file +[[1;3;4;5;6];[2;3;4;5;6]];;

invariant: cartesian_product l = map_product id l.

since
1.2, but only
since
2.2 with labels
val map_product_l : f:('a -> 'b list) -> 'a list -> 'b list list

map_product_l f l maps each element of l to a list of objects of type 'b using f. We obtain [l1;l2;...;ln] where length l=n and li : 'b list. Then, it returns all the ways of picking exactly one element per li.

since
1.2, but only
since
2.2 with labels
val diagonal : 'a t -> ('a * 'a) t

All pairs of distinct positions of the list. list_diagonal l will return the list of List.nth i l, List.nth j l if i < j.

val partition_map : f:('a -> [< `Left of 'b | `Right of 'c | `Drop ]) -> 'a list -> 'b list * 'c list

partition_map ~f l maps f on l and gather results in lists:

  • if f x = `Left y, adds y to the first list.
  • if f x = `Right z, adds z to the second list.
  • if f x = `Drop, ignores x.
since
0.11
val group_by : ?⁠hash:('a -> int) -> ?⁠eq:('a -> 'a -> bool) -> 'a t -> 'a list t

Group equal elements, regardless of their order of appearance. precondition: for any x and y, if eq x y then hash x=hash y must hold.

since
2.3
val join : join_row:('a -> 'b -> 'c option) -> 'a t -> 'b t -> 'c t

join ~join_row a b combines every element of a with every element of b using join_row. If join_row returns None, then the two elements do not combine. Assume that b allows for multiple iterations.

since
2.3
val join_by : ?⁠eq:('key -> 'key -> bool) -> ?⁠hash:('key -> int) -> ('a -> 'key) -> ('b -> 'key) -> merge:('key -> 'a -> 'b -> 'c option) -> 'a t -> 'b t -> 'c t

join key1 key2 ~merge is a binary operation that takes two sequences a and b, projects their elements resp. with key1 and key2, and combine values (x,y) from (a,b) with the same key using merge. If merge returns None, the combination of values is discarded. precondition: for any x and y, if eq x y then hash x=hash y must hold.

since
2.3
val join_all_by : ?⁠eq:('key -> 'key -> bool) -> ?⁠hash:('key -> int) -> ('a -> 'key) -> ('b -> 'key) -> merge:('key -> 'a list -> 'b list -> 'c option) -> 'a t -> 'b t -> 'c t

join_all_by key1 key2 ~merge is a binary operation that takes two sequences a and b, projects their elements resp. with key1 and key2, and, for each key k occurring in at least one of them:

  • compute the list l1 of elements of a that map to k
  • compute the list l2 of elements of b that map to k
  • call merge k l1 l2. If merge returns None, the combination of values is discarded, otherwise it returns Some c and c is inserted in the result.
since
2.3
val group_join_by : ?⁠eq:('a -> 'a -> bool) -> ?⁠hash:('a -> int) -> ('b -> 'a) -> 'a t -> 'b t -> ('a * 'b list) t

group_join_by key2 associates to every element x of the first sequence, all the elements y of the second sequence such that eq x (key y). Elements of the first sequences without corresponding values in the second one are mapped to [] precondition: for any x and y, if eq x y then hash x=hash y must hold.

since
2.3
val sublists_of_len : ?⁠last:('a list -> 'a list option) -> ?⁠offset:int -> len:int -> 'a list -> 'a list list

sublists_of_len n l returns sub-lists of l that have length n. By default, these sub-lists are non overlapping: sublists_of_len 2 [1;2;3;4;5;6] returns [1;2]; [3;4]; [5;6].

Examples:

  • sublists_of_len 2 [1;2;3;4;5;6] = [[1;2]; [3;4]; [5;6]].
  • sublists_of_len 2 ~offset:3 [1;2;3;4;5;6] = [1;2];[4;5].
  • sublists_of_len 3 ~last:CCOpt.return [1;2;3;4] = [1;2;3];[4].
  • sublists_of_len 2 [1;2;3;4;5] = [[1;2]; [3;4]].
parameter offset

the number of elements skipped between two consecutive sub-lists. By default it is n. If offset < n, the sub-lists will overlap; if offset > n, some elements will not appear at all.

parameter last

if provided and the last group of elements g is such that length g < n, last g is called. If last g = Some g', g' is appended; otherwise g is dropped. If last = CCOpt.return, it will simply keep the last group. By default, last = fun _ -> None, i.e. the last group is dropped if shorter than n.

raises Invalid_argument

if offset <= 0 or n <= 0. See CCList.sublists_of_len for more details.

since
1.0, but only
since
1.5 with labels
val intersperse : x:'a -> 'a list -> 'a list

Insert the first argument between every element of the list.

since
2.1, but only
since
2.2 with labels
val interleave : 'a list -> 'a list -> 'a list

interleave [x1…xn] [y1…ym] is x1,y1,x2,y2,… and finishes with the suffix of the longest list.

since
2.1, but only
since
2.2 with labels
val pure : 'a -> 'a t

pure is return.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

funs <*> l is product (fun f x -> f x) funs l.

val (<$>) : ('a -> 'b) -> 'a t -> 'b t

(<$>) is map.

val return : 'a -> 'a t

return x is x.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

l >>= f is flat_map f l.

val take : int -> 'a t -> 'a t

Take the n first elements, drop the rest.

val drop : int -> 'a t -> 'a t

Drop the n first elements, keep the rest.

val hd_tl : 'a t -> 'a * 'a t

hd_tl (x :: l) returns hd, l.

raises Failure

if the list is empty.

since
0.16
val take_drop : int -> 'a t -> 'a t * 'a t

take_drop n l returns l1, l2 such that l1 @ l2 = l and length l1 = min (length l) n.

val take_while : f:('a -> bool) -> 'a t -> 'a t

take_while ~f l returns the longest prefix of l for which f is true.

since
0.13
val drop_while : f:('a -> bool) -> 'a t -> 'a t

drop_while ~f l drops the longest prefix of l for which f is true.

since
0.13
val take_drop_while : f:('a -> bool) -> 'a t -> 'a t * 'a t

take_drop_while p l = take_while p l, drop_while p l.

since
1.2, but only
since
2.2 with labels
val last : int -> 'a t -> 'a t

last n l takes the last n elements of l (or less if l doesn't have that many elements).

val head_opt : 'a t -> 'a option

First element.

since
0.20
val tail_opt : 'a t -> 'a t option

Return the given list without its first element.

since
2.0
val last_opt : 'a t -> 'a option

Last element.

since
0.20
val find_pred : f:('a -> bool) -> 'a t -> 'a option

find_pred p l finds the first element of l that satisfies p, or returns None if no element satisfies p.

since
0.11
val find_opt : f:('a -> bool) -> 'a t -> 'a option

Safe version of find.

since
1.5, but only
since
2.2 with labels
val find_pred_exn : f:('a -> bool) -> 'a t -> 'a

Unsafe version of find_pred.

raises Not_found

if no such element is found.

since
0.11
val find_map : f:('a -> 'b option) -> 'a t -> 'b option

find_map ~f l traverses l, applying f to each element. If for some element x, f x = Some y, then Some y is returned. Otherwise the call returns None.

since
0.11
val find_mapi : f:(int -> 'a -> 'b option) -> 'a t -> 'b option

Like find_map, but also pass the index to the predicate function.

since
0.11
val find_idx : f:('a -> bool) -> 'a t -> (int * 'a) option

find_idx p x returns Some (i,x) where x is the i-th element of l, and p x holds. Otherwise returns None.

val remove : eq:('a -> 'a -> bool) -> key:'a -> 'a t -> 'a t

remove ~key l removes every instance of key from l. Tail-recursive.

parameter eq

equality function.

since
0.11
val filter_map : f:('a -> 'b option) -> 'a t -> 'b t

filter_map ~f l is the sublist of l containing only elements for which f returns Some e. Map and remove elements at the same time.

val keep_some : 'a option t -> 'a t

keep_some l retains only elements of the form Some x. Like filter_map CCFun.id.

since
1.3, but only
since
2.2 with labels
val keep_ok : ('a_) Result.result t -> 'a t

keep_ok l retains only elements of the form Ok x.

since
1.3, but only
since
2.2 with labels
val all_some : 'a option t -> 'a t option

all_some l returns Some l' if all elements of l are of the form Some x, or None otherwise.

since
1.3, but only
since
2.2 with labels
val all_ok : ('a'err) Result.result t -> ('a t'err) Result.result

all_ok l returns Ok l' if all elements of l are of the form Ok x, or Error e otherwise (with the first error met).

since
1.3, but only
since
2.2 with labels
val sorted_merge : cmp:('a -> 'a -> int) -> 'a list -> 'a list -> 'a list

Merge elements from both sorted list.

val sort_uniq : cmp:('a -> 'a -> int) -> 'a list -> 'a list

Sort the list and remove duplicate elements.

val sorted_merge_uniq : cmp:('a -> 'a -> int) -> 'a list -> 'a list -> 'a list

sorted_merge_uniq l1 l2 merges the sorted lists l1 and l2 and removes duplicates.

since
0.10
val is_sorted : cmp:('a -> 'a -> int) -> 'a list -> bool

is_sorted l returns true iff l is sorted (according to given order).

parameter cmp

the comparison function (default Pervasives.compare).

since
0.17
val sorted_insert : cmp:('a -> 'a -> int) -> ?⁠uniq:bool -> 'a -> 'a list -> 'a list

sorted_insert x l inserts x into l such that, if l was sorted, then sorted_insert x l is sorted too.

parameter uniq

if true and x is already in sorted position in l, then x is not duplicated. Default false (x will be inserted in any case).

since
0.17
val uniq_succ : eq:('a -> 'a -> bool) -> 'a list -> 'a list

uniq_succ l removes duplicate elements that occur one next to the other. Examples: uniq_succ [1;2;1] = [1;2;1]. uniq_succ [1;1;2] = [1;2].

since
0.10
val group_succ : eq:('a -> 'a -> bool) -> 'a list -> 'a list list

group_succ ~eq l groups together consecutive elements that are equal according to eq.

since
0.11

Indices

val mapi : f:(int -> 'a -> 'b) -> 'a t -> 'b t

Like map, but the function is applied to the index of the element as first argument (counting from 0), and the element itself as second argument.

val iteri : f:(int -> 'a -> unit) -> 'a t -> unit

Like iter, but the function is applied to the index of the element as first argument (counting from 0), and the element itself as second argument.

val iteri2 : f:(int -> 'a -> 'b -> unit) -> 'a t -> 'b t -> unit

Iter on two lists.

raises Invalid_argument

when lists do not have the same length.

since
2.0, but only
since
2.2 with labels
val foldi : f:('b -> int -> 'a -> 'b) -> init:'b -> 'a t -> 'b

Like fold but it also passes in the index of each element to the folded function. Tail-recursive.

val foldi2 : f:('c -> int -> 'a -> 'b -> 'c) -> init:'c -> 'a t -> 'b t -> 'c

Fold on two lists, with index.

raises Invalid_argument

when lists do not have the same length.

since
2.0, but only
since
2.2 with labels
val get_at_idx : int -> 'a t -> 'a option

Get by index in the list. If the index is negative, it will get element starting from the end of the list.

val nth_opt : 'a t -> int -> 'a option

Safe version of nth.

raises Invalid_argument

if the int is negative.

since
1.5, but only
since
2.2 with labels
val get_at_idx_exn : int -> 'a t -> 'a

Get the i-th element, or

raises Not_found

if the index is invalid. If the index is negative, it will get element starting from the end of the list.

val set_at_idx : int -> 'a -> 'a t -> 'a t

Set i-th element (removes the old one), or does nothing if index is too high. If the index is negative, it will set element starting from the end of the list.

val insert_at_idx : int -> 'a -> 'a t -> 'a t

Insert at i-th position, between the two existing elements. If the index is too high, append at the end of the list. If the index is negative, it will insert element starting from the end of the list.

val remove_at_idx : int -> 'a t -> 'a t

Remove element at given index. Does nothing if the index is too high. If the index is negative, it will remove element starting from the end of the list.

Set Operators

Those operations maintain the invariant that the list does not contain duplicates (if it already satisfies it).

val add_nodup : eq:('a -> 'a -> bool) -> 'a -> 'a t -> 'a t

add_nodup x set adds x to set if it was not already present. Linear time.

since
0.11
val remove_one : eq:('a -> 'a -> bool) -> 'a -> 'a t -> 'a t

remove_one x set removes one occurrence of x from set. Linear time.

since
0.11
val mem : eq:('a -> 'a -> bool) -> 'a -> 'a t -> bool

Membership to the list. Linear time.

val subset : eq:('a -> 'a -> bool) -> 'a t -> 'a t -> bool

Test for inclusion.

val uniq : eq:('a -> 'a -> bool) -> 'a t -> 'a t

Remove duplicates w.r.t the equality predicate. Complexity is quadratic in the length of the list, but the order of elements is preserved. If you wish for a faster de-duplication but do not care about the order, use sort_uniq.

val union : eq:('a -> 'a -> bool) -> 'a t -> 'a t -> 'a t

List union. Complexity is product of length of inputs.

val inter : eq:('a -> 'a -> bool) -> 'a t -> 'a t -> 'a t

List intersection. Complexity is product of length of inputs.

Other Constructors

val range_by : step:int -> int -> int -> int t

range_by ~step i j iterates on integers from i to j included, where the difference between successive elements is step. Use a negative step for a decreasing list.

raises Invalid_argument

if step=0.

since
0.18
val range : int -> int -> int t

range i j iterates on integers from i to j included. It works both for decreasing and increasing ranges.

val range' : int -> int -> int t

Like range but the second bound is excluded. For instance range' 0 5 = [0;1;2;3;4].

val (--) : int -> int -> int t

Infix alias for range.

val (--^) : int -> int -> int t

Infix alias for range'.

since
0.17
val replicate : int -> 'a -> 'a t

Replicate the given element n times.

val repeat : int -> 'a t -> 'a t

Concatenate the list with itself n times.

Association Lists

module Assoc : sig ... end
val assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b

Like Assoc.get_exn.

since
2.0
val assoc_opt : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> 'b option

Like Assoc.get.

since
1.5, but only
since
2.0 with labels
val assq_opt : 'a -> ('a * 'b) t -> 'b option

Safe version of assq.

since
1.5, but only
since
2.0 with labels
val mem_assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * _) t -> bool

Like Assoc.mem.

since
2.0
val remove_assoc : eq:('a -> 'a -> bool) -> 'a -> ('a * 'b) t -> ('a * 'b) t

Like Assoc.remove.

since
2.0

References on Lists

since
0.3.3
module Ref : sig ... end
module type MONAD = sig ... end
module Traverse : functor (M : MONAD) -> sig ... end

Conversions

val random : 'a random_gen -> 'a t random_gen
val random_non_empty : 'a random_gen -> 'a t random_gen
val random_len : int -> 'a random_gen -> 'a t random_gen
val random_choose : 'a t -> 'a random_gen

Randomly choose an element in the list.

raises Not_found

if the list is empty.

val random_sequence : 'a random_gen t -> 'a t random_gen
val to_string : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> ('a -> string) -> 'a t -> string

to_string ~start ~stop ~sep item_to_string l print l to a string using sep as a separator between elements of l.

since
NEXT_RELEASE
val to_seq : 'a t -> 'a sequence

Return a sequence of the elements of the list.

val of_seq : 'a sequence -> 'a t

Build a list from a given sequence. In the result, elements appear in the same order as they did in the source sequence.

val to_gen : 'a t -> 'a gen

Return a gen of the elements of the list.

val of_gen : 'a gen -> 'a t

Build a list from a given gen. In the result, elements appear in the same order as they did in the source gen.

val to_klist : 'a t -> 'a klist

Return a klist of the elements of the list.

val of_klist : 'a klist -> 'a t

Build a list from a given klist. In the result, elements appear in the same order as they did in the source klist.

Infix Operators

It is convenient to open CCList.Infix to access the infix operators without cluttering the scope too much.

since
0.16
module Infix : sig ... end

IO

val pp : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> 'a printer -> 'a t printer

Print the contents of a list.

\ No newline at end of file diff --git a/dev/containers/CCListLabels/module-type-MONAD/index.html b/dev/containers/CCListLabels/module-type-MONAD/index.html index f5bf114c..baceea6d 100644 --- a/dev/containers/CCListLabels/module-type-MONAD/index.html +++ b/dev/containers/CCListLabels/module-type-MONAD/index.html @@ -1,2 +1,2 @@ -MONAD (containers.CCListLabels.MONAD)

Module type CCListLabels.MONAD

Monadic Operations

type 'a t
val return : 'a -> 'a t

Monadic return.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

\ No newline at end of file +MONAD (containers.CCListLabels.MONAD)

Module type CCListLabels.MONAD

Monadic Operations

type 'a t
val return : 'a -> 'a t

Monadic return.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

\ No newline at end of file diff --git a/dev/containers.thread/CCTimer/.jbuilder-keep b/dev/containers/CCLock/.dune-keep similarity index 100% rename from dev/containers.thread/CCTimer/.jbuilder-keep rename to dev/containers/CCLock/.dune-keep diff --git a/dev/containers/CCLock/LockRef/index.html b/dev/containers/CCLock/LockRef/index.html new file mode 100644 index 00000000..c6dc4f75 --- /dev/null +++ b/dev/containers/CCLock/LockRef/index.html @@ -0,0 +1,2 @@ + +LockRef (containers.CCLock.LockRef)

Module CCLock.LockRef

Type allowing to manipulate the lock as a reference.

since
0.13
type 'a t
val get : 'a t -> 'a
val set : 'a t -> 'a -> unit
val update : 'a t -> ('a -> 'a) -> unit
\ No newline at end of file diff --git a/dev/containers/CCLock/index.html b/dev/containers/CCLock/index.html new file mode 100644 index 00000000..c7cafbbf --- /dev/null +++ b/dev/containers/CCLock/index.html @@ -0,0 +1,2 @@ + +CCLock (containers.CCLock)

Module CCLock

Utils around Mutex

A value wrapped into a Mutex, for more safety.

since
0.8
type 'a t

A value surrounded with a lock

val create : 'a -> 'a t

Create a new protected value.

val with_lock : 'a t -> ('a -> 'b) -> 'b

with_lock l f runs f x where x is the value protected with the lock l, in a critical section. If f x fails, with_lock l f fails too but the lock is released.

val try_with_lock : 'a t -> ('a -> 'b) -> 'b option

try_with_lock l f runs f x in a critical section if l is not locked. x is the value protected by the lock l. If f x fails, try_with_lock l f fails too but the lock is released.

since
0.22
module LockRef : sig ... end

Type allowing to manipulate the lock as a reference.

val with_lock_as_ref : 'a t -> f:('a LockRef.t -> 'b) -> 'b

with_lock_as_ref l f calls f with a reference-like object that allows to manipulate the value of l safely. The object passed to f must not escape the function call.

since
0.13
val update : 'a t -> ('a -> 'a) -> unit

update l f replaces the content x of l with f x, atomically.

val update_map : 'a t -> ('a -> 'a * 'b) -> 'b

update_map l f computes x', y = f (get l), then puts x' in l and returns y.

since
0.16
val mutex : _ t -> Mutex.t

Underlying mutex.

val get : 'a t -> 'a

Atomically get the value in the lock. The value that is returned isn't protected!

val set : 'a t -> 'a -> unit

Atomically set the value.

since
0.13
val incr : int t -> unit

Atomically increment the value.

since
0.13
val decr : int t -> unit

Atomically decrement the value.

since
0.13
val incr_then_get : int t -> int

incr_then_get x increments x, and returns its new value.

since
0.16
val get_then_incr : int t -> int

get_then_incr x increments x, and returns its previous value.

since
0.16
val decr_then_get : int t -> int

decr_then_get x decrements x, and returns its new value.

since
0.16
val get_then_decr : int t -> int

get_then_decr x decrements x, and returns its previous value.

since
0.16
val get_then_set : bool t -> bool

get_then_set b sets b to true, and returns the old value.

since
0.16
val get_then_clear : bool t -> bool

get_then_clear b sets b to false, and returns the old value.

since
0.16
\ No newline at end of file diff --git a/dev/containers/CCMap.odoc b/dev/containers/CCMap.odoc deleted file mode 100644 index 97fc4aea91ea55af86875b1a251e3ff053569a8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5454 zcma)A4R9P~8NS=yFKI%jU=6kf#65C9Nk}f&(o(2`*B`=EDQ!8*P!;3mZZBDLw|ngF zB@N6J9Z_KTnGH-^5yWkqAYzp^l>rej3?e@c_y+}%VLE`qC`xAl9Xg0U-{0M~1;)-~ z`t5!1`@Fy3`@Y}jl$>JU;_Q-a?&@uKJ{*h1QurhI>%iX$dwYtG?HiVDy57#z>ecIv zT0U2Q=BaBQ-+N&G`fURXfAPV*0%z>_cP!TWVk~yz?ckl66N@Ed;s3?1DM1+Cw=y3F zE6&^Eo3>{;wx>H~z2F;m$#6?Ll^SBdt!IPlj9Dd9uX|>>UeU{SyXZ4=Q0kU%x`yw# zV7B#eG6lA5As^n-naeKAYxBb}y{cX=n{JT1{kAjD{=+%r1CL$)^r3-)zjudWA8d1M zr|P)15vv&F-rcab|F-oHOg!nH_xOu>uw9!%nCb4)Drt@g+ziY!?<1Z)letK!w&2L@tr(I!~+Eg4dp!(*@ zT5sXKkCH3T|M>xb>$|_t2YZ)zZn3}UxMn{KP!?*o_4kiBRkPo-s*c@1?zp2~%_y3n zlF{rR9I9KDQh&)T8}*8xn;CuLx%(a&JAB~nt49C(=lV}p=7aF&*=cP}muFsHH|?Ss zg!%kz7zPO=pU(#~`I$VHQ$esjS+^}ekCjHS!?-TX)LiDPKwA{$nc6+6t?Vu{@4=G| z4DA%kIXOF}`KPaUOQvgc;dBF?RkIpsS2L1nZJl;DY^1J9Nos8Yr~GoKQ7Q%6t$h1L z?h5|#xiHXL8P`gz=5l&3U9Xi4-wd>UoT?8jY_&b@)aWT_NSFhz79sa*41sE3V)Y4* zwWHg!?BR;(J9eNw$Kf_|4JhR}<7amNDD9e6XADwb=VV2Jdrd>yjZNxbrmChp4C4O? z)wC-F`2~!eLlm$cV&-keN&?ORrbAHQkM$=R#Y0%l=SshoLY_fk67Q4fcXOSQiJD3k z{|2b%2#go7o+s8XW8J~_#V?I@f#E%!c6q2-h;fG0K8;Mip`3WQOnQEg+QnHZ|4^VQ%=7B$~;%fyXf?)u_Yo8b(>nP z^hV?<9Z`AZ{s@PVHzl}0$2~#f??`#QN66cnE{-^kha;stD3~sdih^EE({AqJ#6rsN z1Vg1EMbV{{OOKFpcgm|(Eb56j1W!rCS-CbUE#ShK#cQyh$78PCj&+B0(KE?1f*BBX zuE4rhV(npAI6yoS2fHXCS5`e$5Pwe+Kit&X1$>JL-@keoQ`vGo=<3S*q;gftZ#2 zs8@{)P-Y`;Qs-xz5JLKf2F%kO<|PU9PE(D$r1K6&ou@A8W^fgQDO779{evUDFOXE8 zTs$R}_oE73*w;W1`rIH<)Ha5qE|e&_rarF;ebiHq(8unqVj?2y9*O}Upk{I3su#kK z0*}@%-Ux~M?Iaj1a6H(z` z%TO(mrEo}^X`=2Y>JJ(p_Y?K|4RcgV$)^LNK9&aTpyL90@(jMzNA;?{Rg71dT@$)% z`gIqhtv>?6Mx}1*hUYm&3r)SG`wm9d#Aq0tty^Wi=9->q`@QXSu9bY@WTpYvuRDNo z$1Ts)yTHJC&(KSb>Dd`yA2KVBJ*-=F5Kf?SpVpnlD3#1*7oW+^(LO8wU%||n2?7bu zLSV3z*J5($fL*MYzo)Es6)-_EbDD= z>TCH8)^u6F(6KR@wCP!Wt*smO1ok|$m!eQV!4H^Db&JYLa?(UQH+C`ol}{%nz3e(w zkWf>X_W}mDfnxzOT+2)tq$#)!pdJiiP;)FpP3q%_G)iVkCV_T693>JGeM8hg6>S4c z_Ph37`LlKhTXElgC0gA+GUG`6Z#?D1pvw^-kcdQmkDnUtH$2~XS<$XOrYn531m)`= zBH@*W1T7&XynTd(J;(HckC9M5RsxB)H$|)!M?Ze@5i*`_R@9FH$NWdnWYj?~I$Pn0+tZ;AH2RI?T%ni7JJm>xnGYek=XHlgs4UL%!6*=JY`iHISC9#m!HBYgsq+p)gpivmbf6 zLcygcFkys2ik&X3LDPe>g=&XFB&!R;5(J5|(Ci7Qv@Ohs`;r%!WnY-RFLjYMJi@+) z=+-J!1_YNXjlUsW$Y{SNi|`@t1|TwD zz?+b#(@95$w|(5IRL~t|hovH@V!Y2tFB9#2Y1#g$hkq7vjN3&$Oif|06tuNAT>Mzm z#Y7vGP|ru9__)V%pk;d!R(RBH%huvTgqlNNu;_2h2zj=a$q2p~vWRQxW{gq!CQs(KynR8AP4gMp|2W*wuxSl4uVJlhkfu66bp5v>FDv zR(&RzOnE-;W>9Z?+Vk-gG>p11ne=?8M)RhPex(f8b;jxE3G}nmGuhq(Zsjy-y^gf@ zG7HtsVj$Dnqz>Bgd)_ -CCMap (containers.CCMap)

Module CCMap

Extensions of Standard Map

Provide useful functions and iterators on Map.S

since
0.5
type 'a sequence = ('a -> unit) -> unit
type 'a printer = Format.formatter -> 'a -> unit
module type OrderedType = Map.OrderedType
module type S = sig ... end
module Make : functor (O : Map.OrderedType) -> S with type 'a Make.t = 'a Map.Make(O).t and type Make.key = O.t
\ No newline at end of file +CCMap (containers.CCMap)

Module CCMap

Extensions of Standard Map

Provide useful functions and iterators on Map.S

since
0.5
type 'a sequence = ('a -> unit) -> unit
type 'a printer = Format.formatter -> 'a -> unit
module type OrderedType = Map.OrderedType
module type S = sig ... end
module Make : functor (O : Map.OrderedType) -> S with type 'a Make.t = 'a Map.Make(O).t and type Make.key = O.t
\ No newline at end of file diff --git a/dev/containers/CCMap/module-type-S/index.html b/dev/containers/CCMap/module-type-S/index.html index a99cc629..718442c2 100644 --- a/dev/containers/CCMap/module-type-S/index.html +++ b/dev/containers/CCMap/module-type-S/index.html @@ -1,2 +1,2 @@ -S (containers.CCMap.S)

Module type CCMap.S

include Map.S
type key
type +'a t
val empty : 'a t
val is_empty : 'a t -> bool
val mem : key -> 'a t -> bool
val add : key -> 'a -> 'a t -> 'a t
val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
val singleton : key -> 'a -> 'a t
val remove : key -> 'a t -> 'a t
val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t
val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val for_all : (key -> 'a -> bool) -> 'a t -> bool
val exists : (key -> 'a -> bool) -> 'a t -> bool
val filter : (key -> 'a -> bool) -> 'a t -> 'a t
val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
val cardinal : 'a t -> int
val bindings : 'a t -> (key * 'a) list
val min_binding : 'a t -> key * 'a
val min_binding_opt : 'a t -> (key * 'a) option
val max_binding : 'a t -> key * 'a
val max_binding_opt : 'a t -> (key * 'a) option
val choose : 'a t -> key * 'a
val choose_opt : 'a t -> (key * 'a) option
val split : key -> 'a t -> 'a t * 'a option * 'a t
val find : key -> 'a t -> 'a
val find_opt : key -> 'a t -> 'a option
val find_first : (key -> bool) -> 'a t -> key * 'a
val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
val find_last : (key -> bool) -> 'a t -> key * 'a
val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
val map : ('a -> 'b) -> 'a t -> 'b t
val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
val get : key -> 'a t -> 'a option

Safe version of find.

val get_or : key -> 'a t -> default:'a -> 'a

get_or k m ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in m).

since
0.16
val update : key -> ('a option -> 'a option) -> 'a t -> 'a t

update k f m calls f (Some v) if find k m = v, otherwise it calls f None. In any case, if the result is None k is removed from m, and if the result is Some v' then add k v' m is returned.

val choose_opt : 'a t -> (key * 'a) option

Safe version of choose.

since
1.5
val min_binding_opt : 'a t -> (key * 'a) option

Safe version of min_binding.

since
1.5
val max_binding_opt : 'a t -> (key * 'a) option

Safe version of max_binding.

since
1.5
val find_opt : key -> 'a t -> 'a option

Safe version of find.

since
1.5
val find_first : (key -> bool) -> 'a t -> key * 'a

Find smallest binding satisfying the monotonic predicate. See Map.S.find_first.

since
1.5
val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option

Safe version of find_first.

since
1.5
val merge_safe : f:(key -> [ `Left of 'a | `Right of 'b | `Both of 'a * 'b ] -> 'c option) -> 'a t -> 'b t -> 'c t

merge_safe ~f a b merges the maps a and b together.

since
0.17
val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t

Union of both maps, using the function to combine bindings that belong to both inputs.

since
1.4
val of_seq : (key * 'a) sequence -> 'a t

Like of_list.

val add_seq : 'a t -> (key * 'a) sequence -> 'a t
since
0.14
val to_seq : 'a t -> (key * 'a) sequence
val of_list : (key * 'a) list -> 'a t

Build a map from the given list of bindings k_i -> v_i, added in order using add. If a key occurs several times, only its last binding will be present in the result.

val add_list : 'a t -> (key * 'a) list -> 'a t
since
0.14
val keys : _ t -> key sequence

Iterate on keys only.

since
0.15
val values : 'a t -> 'a sequence

Iterate on values only.

since
0.15
val to_list : 'a t -> (key * 'a) list
val pp : ?⁠start:string -> ?⁠stop:string -> ?⁠arrow:string -> ?⁠sep:string -> key printer -> 'a printer -> 'a t printer
\ No newline at end of file +S (containers.CCMap.S)

Module type CCMap.S

include Map.S
type key
type +'a t
val empty : 'a t
val is_empty : 'a t -> bool
val mem : key -> 'a t -> bool
val add : key -> 'a -> 'a t -> 'a t
val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
val singleton : key -> 'a -> 'a t
val remove : key -> 'a t -> 'a t
val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t
val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val for_all : (key -> 'a -> bool) -> 'a t -> bool
val exists : (key -> 'a -> bool) -> 'a t -> bool
val filter : (key -> 'a -> bool) -> 'a t -> 'a t
val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
val cardinal : 'a t -> int
val bindings : 'a t -> (key * 'a) list
val min_binding : 'a t -> key * 'a
val min_binding_opt : 'a t -> (key * 'a) option
val max_binding : 'a t -> key * 'a
val max_binding_opt : 'a t -> (key * 'a) option
val choose : 'a t -> key * 'a
val choose_opt : 'a t -> (key * 'a) option
val split : key -> 'a t -> 'a t * 'a option * 'a t
val find : key -> 'a t -> 'a
val find_opt : key -> 'a t -> 'a option
val find_first : (key -> bool) -> 'a t -> key * 'a
val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
val find_last : (key -> bool) -> 'a t -> key * 'a
val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
val map : ('a -> 'b) -> 'a t -> 'b t
val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
val get : key -> 'a t -> 'a option

Safe version of find.

val get_or : key -> 'a t -> default:'a -> 'a

get_or k m ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in m).

since
0.16
val update : key -> ('a option -> 'a option) -> 'a t -> 'a t

update k f m calls f (Some v) if find k m = v, otherwise it calls f None. In any case, if the result is None k is removed from m, and if the result is Some v' then add k v' m is returned.

val choose_opt : 'a t -> (key * 'a) option

Safe version of choose.

since
1.5
val min_binding_opt : 'a t -> (key * 'a) option

Safe version of min_binding.

since
1.5
val max_binding_opt : 'a t -> (key * 'a) option

Safe version of max_binding.

since
1.5
val find_opt : key -> 'a t -> 'a option

Safe version of find.

since
1.5
val find_first : (key -> bool) -> 'a t -> key * 'a

Find smallest binding satisfying the monotonic predicate. See Map.S.find_first.

since
1.5
val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option

Safe version of find_first.

since
1.5
val merge_safe : f:(key -> [ `Left of 'a | `Right of 'b | `Both of 'a * 'b ] -> 'c option) -> 'a t -> 'b t -> 'c t

merge_safe ~f a b merges the maps a and b together.

since
0.17
val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t

Union of both maps, using the function to combine bindings that belong to both inputs.

since
1.4
val of_seq : (key * 'a) sequence -> 'a t

Like of_list.

val add_seq : 'a t -> (key * 'a) sequence -> 'a t
since
0.14
val to_seq : 'a t -> (key * 'a) sequence
val of_list : (key * 'a) list -> 'a t

Build a map from the given list of bindings k_i -> v_i, added in order using add. If a key occurs several times, only its last binding will be present in the result.

val add_list : 'a t -> (key * 'a) list -> 'a t
since
0.14
val keys : _ t -> key sequence

Iterate on keys only.

since
0.15
val values : 'a t -> 'a sequence

Iterate on values only.

since
0.15
val to_list : 'a t -> (key * 'a) list
val pp : ?⁠start:string -> ?⁠stop:string -> ?⁠arrow:string -> ?⁠sep:string -> key printer -> 'a printer -> 'a t printer
\ No newline at end of file diff --git a/dev/containers.unix/CCUnix/.jbuilder-keep b/dev/containers/CCMixmap/.dune-keep similarity index 100% rename from dev/containers.unix/CCUnix/.jbuilder-keep rename to dev/containers/CCMixmap/.dune-keep diff --git a/dev/containers/CCMixmap/Make/argument-1-X/index.html b/dev/containers/CCMixmap/Make/argument-1-X/index.html new file mode 100644 index 00000000..3be9f719 --- /dev/null +++ b/dev/containers/CCMixmap/Make/argument-1-X/index.html @@ -0,0 +1,2 @@ + +1-X (containers.CCMixmap.Make.1-X)

Parameter Make.1-X

type t
val compare : t -> t -> int
\ No newline at end of file diff --git a/dev/containers/CCMixmap/Make/index.html b/dev/containers/CCMixmap/Make/index.html new file mode 100644 index 00000000..dc6a1574 --- /dev/null +++ b/dev/containers/CCMixmap/Make/index.html @@ -0,0 +1,2 @@ + +Make (containers.CCMixmap.Make)

Module CCMixmap.Make

Parameters

Signature

type key = X.t
type t

A map containing values of different types, indexed by key.

val empty : t

Empty map.

val get : inj:'a injection -> key -> t -> 'a option

Get the value corresponding to this key, if it exists and belongs to the same key.

val add : inj:'a injection -> key -> 'a -> t -> t

Bind the key to the value, using inj.

val find : inj:'a injection -> key -> t -> 'a

Find the value for the given key, which must be of the right type.

raises Not_found

if either the key is not found, or if its value doesn't belong to the right type.

val cardinal : t -> int

Number of bindings.

val remove : key -> t -> t

Remove the binding for this key.

val mem : inj:_ injection -> key -> t -> bool

Is the given key in the map, with the right type?

val iter_keys : f:(key -> unit) -> t -> unit

Iterate on the keys of this map.

val fold_keys : f:('a -> key -> 'a) -> x:'a -> t -> 'a

Fold over the keys.

Iterators

type 'a sequence = ('a -> unit) -> unit
val keys_seq : t -> key sequence

All the keys.

val bindings_of : inj:'a injection -> t -> (key * 'a) sequence

All the bindings that come from the corresponding injection.

type value =
| Value : ('a injection -> 'a option) -> value
val bindings : t -> (key * value) sequence

Iterate on all bindings.

\ No newline at end of file diff --git a/dev/containers/CCMixmap/index.html b/dev/containers/CCMixmap/index.html new file mode 100644 index 00000000..80bace53 --- /dev/null +++ b/dev/containers/CCMixmap/index.html @@ -0,0 +1,19 @@ + +CCMixmap (containers.CCMixmap)

Module CCMixmap

Maps with Heterogeneous Values

status: experimental

module M = CCMixmap.Make(CCInt)
+
+let inj_int = CCMixmap.create_inj()
+let inj_str = CCMixmap.create_inj()
+let inj_list_int = CCMixmap.create_inj()
+
+let m =
+  M.empty
+  |> M.add ~inj:inj_int 1 1
+  |> M.add ~inj:inj_str 2 "2"
+  |> M.add ~inj:inj_list_int 3 [3;3;3]
+
+    assert (M.get ~inj:inj_int 1 m = Some 1)
+    assert (M.get ~inj:inj_str 1 m = None)
+    assert (M.get ~inj:inj_str 2 m = Some "2")
+    assert (M.get ~inj:inj_int 2 m = None)
+    assert (M.get ~inj:inj_list_int 3 m = Some [3;3;3])
+    assert (M.get ~inj:inj_str 3 m = None)

change of API, the map is last argument to make piping with |> easier since 0.16.

since
0.9
type 'a injection

An accessor for values of type 'a in any map. Values put in the map using a key can only be retrieved using this very same key.

val create_inj : unit -> 'a injection

Return a value that works for a given type of values. This function is normally called once for each type of value. Several keys may be created for the same type, but a value set with a given setter can only be retrieved with the matching getter. The same key can be reused across multiple maps (although not in a thread-safe way).

module type S = sig ... end
module type ORD = sig ... end
module Make : functor (X : ORD) -> S with type key = X.t
\ No newline at end of file diff --git a/dev/containers/CCMixmap/module-type-ORD/index.html b/dev/containers/CCMixmap/module-type-ORD/index.html new file mode 100644 index 00000000..21950acd --- /dev/null +++ b/dev/containers/CCMixmap/module-type-ORD/index.html @@ -0,0 +1,2 @@ + +ORD (containers.CCMixmap.ORD)

Module type CCMixmap.ORD

type t
val compare : t -> t -> int
\ No newline at end of file diff --git a/dev/containers/CCMixmap/module-type-S/index.html b/dev/containers/CCMixmap/module-type-S/index.html new file mode 100644 index 00000000..136add88 --- /dev/null +++ b/dev/containers/CCMixmap/module-type-S/index.html @@ -0,0 +1,2 @@ + +S (containers.CCMixmap.S)

Module type CCMixmap.S

type key
type t

A map containing values of different types, indexed by key.

val empty : t

Empty map.

val get : inj:'a injection -> key -> t -> 'a option

Get the value corresponding to this key, if it exists and belongs to the same key.

val add : inj:'a injection -> key -> 'a -> t -> t

Bind the key to the value, using inj.

val find : inj:'a injection -> key -> t -> 'a

Find the value for the given key, which must be of the right type.

raises Not_found

if either the key is not found, or if its value doesn't belong to the right type.

val cardinal : t -> int

Number of bindings.

val remove : key -> t -> t

Remove the binding for this key.

val mem : inj:_ injection -> key -> t -> bool

Is the given key in the map, with the right type?

val iter_keys : f:(key -> unit) -> t -> unit

Iterate on the keys of this map.

val fold_keys : f:('a -> key -> 'a) -> x:'a -> t -> 'a

Fold over the keys.

Iterators

type 'a sequence = ('a -> unit) -> unit
val keys_seq : t -> key sequence

All the keys.

val bindings_of : inj:'a injection -> t -> (key * 'a) sequence

All the bindings that come from the corresponding injection.

type value =
| Value : ('a injection -> 'a option) -> value
val bindings : t -> (key * value) sequence

Iterate on all bindings.

\ No newline at end of file diff --git a/dev/containers/CCArray/.jbuilder-keep b/dev/containers/CCMixset/.dune-keep similarity index 100% rename from dev/containers/CCArray/.jbuilder-keep rename to dev/containers/CCMixset/.dune-keep diff --git a/dev/containers/CCMixset/index.html b/dev/containers/CCMixset/index.html new file mode 100644 index 00000000..4e8740c6 --- /dev/null +++ b/dev/containers/CCMixset/index.html @@ -0,0 +1,14 @@ + +CCMixset (containers.CCMixset)

Module CCMixset

Set of Heterogeneous Values

let k1 : int key = newkey () in
+let k2 : int key = newkey () in
+let k3 : string key = newkey () in
+let set =
+  empty
+  |> set ~key:k1 1
+  |> set ~key:k2 2
+  |> set ~key:k3 "3"
+in
+assert (get ~key:k1 set = Some 1);
+assert (get ~key:k2 set = Some 2);
+assert (get ~key:k3 set = Some "3");
+()
since
0.11
type t

A set of values of heterogeneous types

type 'a key

A unique "key" to access a value of type 'a in a set

val newkey : unit -> 'a key

newkey () creates a new unique key that can be used to access a 'a value in a set. Each key created with newkey is distinct from any other key, even if they have the same type.

Not thread-safe.

val empty : t

Empty set.

val set : key:'a key -> 'a -> t -> t

set ~key v set maps key to v in set. It means that for every set, get ~key (set ~key v set) = Some v.

val get : key:'a key -> t -> 'a option

get ~key set obtains the value for key in set, if any.

val get_exn : key:'a key -> t -> 'a

Same as get, but can fail.

raises Not_found

if the key is not present.

val cardinal : t -> int

Number of mappings.

\ No newline at end of file diff --git a/dev/containers/CCArrayLabels/.jbuilder-keep b/dev/containers/CCMixtbl/.dune-keep similarity index 100% rename from dev/containers/CCArrayLabels/.jbuilder-keep rename to dev/containers/CCMixtbl/.dune-keep diff --git a/dev/containers/CCMixtbl/index.html b/dev/containers/CCMixtbl/index.html new file mode 100644 index 00000000..0366be83 --- /dev/null +++ b/dev/containers/CCMixtbl/index.html @@ -0,0 +1,22 @@ + +CCMixtbl (containers.CCMixtbl)

Module CCMixtbl

Hash Table with Heterogeneous Keys

From https://github.com/mjambon/mixtbl (thanks to him). Example:

let inj_int = CCMixtbl.create_inj () ;;
+
+let tbl = CCMixtbl.create 10 ;;
+
+OUnit.assert_equal None (CCMixtbl.get ~inj:inj_int tbl "a");;
+
+CCMixtbl.set inj_int tbl "a" 1;;
+
+OUnit.assert_equal (Some 1) (CCMixtbl.get ~inj:inj_int tbl "a");;
+
+let inj_string = CCMixtbl.create_inj () ;;
+
+CCMixtbl.set inj_string tbl "b" "Hello";
+
+OUnit.assert_equal (Some "Hello") (CCMixtbl.get inj_string tbl "b");;
+OUnit.assert_equal None (CCMixtbl.get inj_string tbl "a");;
+OUnit.assert_equal (Some 1) (CCMixtbl.get inj_int tbl "a");;
+CCMixtbl.set inj_string tbl "a" "Bye";;
+
+OUnit.assert_equal None (CCMixtbl.get inj_int tbl "a");;
+OUnit.assert_equal (Some "Bye") (CCMixtbl.get inj_string tbl "a");;
since
0.6
type 'a t

A hash table containing values of different types. The type parameter 'a represents the type of the keys.

type 'b injection

An accessor for values of type 'b in any table. Values put in the table using a key can only be retrieved using this very same key.

val create : int -> 'a t

create n creates a hash table of initial size n.

val create_inj : unit -> 'b injection

Return a value that works for a given type of values. This function is normally called once for each type of value. Several keys may be created for the same type, but a value set with a given setter can only be retrieved with the matching getter. The same key can be reused across multiple tables (although not in a thread-safe way).

val get : inj:'b injection -> 'a t -> 'a -> 'b option

Get the value corresponding to this key, if it exists and belongs to the same key.

val set : inj:'b injection -> 'a t -> 'a -> 'b -> unit

Bind the key to the value, using inj.

val find : inj:'b injection -> 'a t -> 'a -> 'b

Find the value for the given key, which must be of the right type.

raises Not_found

if either the key is not found, or if its value doesn't belong to the right type.

val length : 'a t -> int

Number of bindings.

val clear : 'a t -> unit

Clear content of the hashtable.

val remove : 'a t -> 'a -> unit

Remove the binding for this key.

val copy : 'a t -> 'a t

Copy of the table.

val mem : inj:_ injection -> 'a t -> 'a -> bool

Is the given key in the table, with the right type?

val iter_keys : 'a t -> ('a -> unit) -> unit

Iterate on the keys of this table.

val fold_keys : 'a t -> 'b -> ('b -> 'a -> 'b) -> 'b

Fold over the keys.

Iterators

type 'a sequence = ('a -> unit) -> unit
val keys_seq : 'a t -> 'a sequence

All the keys.

val bindings_of : inj:'b injection -> 'a t -> ('a * 'b) sequence

All the bindings that come from the corresponding injection.

type value =
| Value : ('b injection -> 'b option) -> value
val bindings : 'a t -> ('a * value) sequence

Iterate on all bindings.

\ No newline at end of file diff --git a/dev/containers/CCArray_slice/.jbuilder-keep b/dev/containers/CCMonomorphic/.dune-keep similarity index 100% rename from dev/containers/CCArray_slice/.jbuilder-keep rename to dev/containers/CCMonomorphic/.dune-keep diff --git a/dev/containers/CCMonomorphic/index.html b/dev/containers/CCMonomorphic/index.html new file mode 100644 index 00000000..1cad5cd5 --- /dev/null +++ b/dev/containers/CCMonomorphic/index.html @@ -0,0 +1,2 @@ + +CCMonomorphic (containers.CCMonomorphic)

Module CCMonomorphic

Shadow unsafe functions and operators from Pervasives

val (=) : int -> int -> bool
val (<>) : int -> int -> bool
val (<) : int -> int -> bool
val (>) : int -> int -> bool
val (<=) : int -> int -> bool
val (>=) : int -> int -> bool
val compare : int -> int -> int
val min : int -> int -> int
val max : int -> int -> int

Infix operators for Floats

val (=.) : float -> float -> bool
since
2.1
val (<>.) : float -> float -> bool
since
2.1
val (<.) : float -> float -> bool
since
2.1
val (>.) : float -> float -> bool
since
2.1
val (<=.) : float -> float -> bool
since
2.1
val (>=.) : float -> float -> bool
since
2.1

Shadow Dangerous Operators

val (==) : [ `Consider_using_CCEqual_physical ]
val (!=) : [ `Consider_using_CCEqual_physical ]
since
2.1
\ No newline at end of file diff --git a/dev/containers/CCBool/.jbuilder-keep b/dev/containers/CCMonomorphicShims_/.dune-keep similarity index 100% rename from dev/containers/CCBool/.jbuilder-keep rename to dev/containers/CCMonomorphicShims_/.dune-keep diff --git a/dev/containers/CCMonomorphicShims_/index.html b/dev/containers/CCMonomorphicShims_/index.html new file mode 100644 index 00000000..0ec7554e --- /dev/null +++ b/dev/containers/CCMonomorphicShims_/index.html @@ -0,0 +1,2 @@ + +CCMonomorphicShims_ (containers.CCMonomorphicShims_)

Module CCMonomorphicShims_

module Stdlib = Pervasives
\ No newline at end of file diff --git a/dev/containers/CCChar/.jbuilder-keep b/dev/containers/CCMultiMap/.dune-keep similarity index 100% rename from dev/containers/CCChar/.jbuilder-keep rename to dev/containers/CCMultiMap/.dune-keep diff --git a/dev/containers/CCMultiMap/Make/argument-1-K/index.html b/dev/containers/CCMultiMap/Make/argument-1-K/index.html new file mode 100644 index 00000000..b063bcb7 --- /dev/null +++ b/dev/containers/CCMultiMap/Make/argument-1-K/index.html @@ -0,0 +1,2 @@ + +1-K (containers.CCMultiMap.Make.1-K)

Parameter Make.1-K

type t
val compare : t -> t -> int
\ No newline at end of file diff --git a/dev/containers/CCMultiMap/Make/argument-2-V/index.html b/dev/containers/CCMultiMap/Make/argument-2-V/index.html new file mode 100644 index 00000000..0166fbb3 --- /dev/null +++ b/dev/containers/CCMultiMap/Make/argument-2-V/index.html @@ -0,0 +1,2 @@ + +2-V (containers.CCMultiMap.Make.2-V)

Parameter Make.2-V

type t
val compare : t -> t -> int
\ No newline at end of file diff --git a/dev/containers/CCMultiMap/Make/index.html b/dev/containers/CCMultiMap/Make/index.html new file mode 100644 index 00000000..8796680b --- /dev/null +++ b/dev/containers/CCMultiMap/Make/index.html @@ -0,0 +1,2 @@ + +Make (containers.CCMultiMap.Make)

Module CCMultiMap.Make

Parameters

Signature

type key = K.t
type value = V.t
type t
val empty : t

Empty multimap.

val is_empty : t -> bool

Empty multimap?

val add : t -> key -> value -> t

Add a key/value binding.

val remove : t -> key -> value -> t

Remove the binding.

val remove_all : t -> key -> t

Remove the key from the map.

val mem : t -> key -> bool

Is there a binding for this key?

val find : t -> key -> value list

List of values for this key.

val find_iter : t -> key -> (value -> unit) -> unit

Iterate on bindings for this key.

val count : t -> key -> int

Number of bindings for this key.

val iter : t -> (key -> value -> unit) -> unit

Iterate on all key/value.

val fold : t -> 'a -> ('a -> key -> value -> 'a) -> 'a

Fold on all key/value.

val size : t -> int

Number of keys.

val union : t -> t -> t

Union of multimaps.

val inter : t -> t -> t

Intersection of multimaps.

val diff : t -> t -> t

Difference of maps, i.e. bindings of the first that are not in the second.

val equal : t -> t -> bool

Same multimap.

val compare : t -> t -> int

Total order on multimaps.

val submap : t -> t -> bool

submap m1 m2 is true iff all bindings of m1 are also in m2.

val to_seq : t -> (key * value) sequence
val of_seq : ?⁠init:t -> (key * value) sequence -> t
val keys : t -> key sequence
val values : t -> value sequence

Some values may occur several times.

\ No newline at end of file diff --git a/dev/containers/CCMultiMap/MakeBidir/argument-1-L/index.html b/dev/containers/CCMultiMap/MakeBidir/argument-1-L/index.html new file mode 100644 index 00000000..1463db5f --- /dev/null +++ b/dev/containers/CCMultiMap/MakeBidir/argument-1-L/index.html @@ -0,0 +1,2 @@ + +1-L (containers.CCMultiMap.MakeBidir.1-L)

Parameter MakeBidir.1-L

type t
val compare : t -> t -> int
\ No newline at end of file diff --git a/dev/containers/CCMultiMap/MakeBidir/argument-2-R/index.html b/dev/containers/CCMultiMap/MakeBidir/argument-2-R/index.html new file mode 100644 index 00000000..68870a39 --- /dev/null +++ b/dev/containers/CCMultiMap/MakeBidir/argument-2-R/index.html @@ -0,0 +1,2 @@ + +2-R (containers.CCMultiMap.MakeBidir.2-R)

Parameter MakeBidir.2-R

type t
val compare : t -> t -> int
\ No newline at end of file diff --git a/dev/containers/CCMultiMap/MakeBidir/index.html b/dev/containers/CCMultiMap/MakeBidir/index.html new file mode 100644 index 00000000..3dbea543 --- /dev/null +++ b/dev/containers/CCMultiMap/MakeBidir/index.html @@ -0,0 +1,2 @@ + +MakeBidir (containers.CCMultiMap.MakeBidir)

Module CCMultiMap.MakeBidir

Parameters

Signature

type t
type left = L.t
type right = R.t
val empty : t
val is_empty : t -> bool
val add : t -> left -> right -> t

Add a binding (left,right).

val remove : t -> left -> right -> t

Remove a specific binding.

val cardinal_left : t -> int

Number of distinct left keys.

val cardinal_right : t -> int

Number of distinct right keys.

val remove_left : t -> left -> t

Remove all bindings for the left key.

val remove_right : t -> right -> t

Remove all bindings for the right key.

val mem_left : t -> left -> bool

Is the left key present in at least one pair?

val mem_right : t -> right -> bool

Is the right key present in at least one pair?

val find_left : t -> left -> right sequence

Find all bindings for this given left-key.

val find_right : t -> right -> left sequence

Find all bindings for this given right-key.

val find1_left : t -> left -> right option

Like find_left but returns at most one value.

val find1_right : t -> right -> left option

Like find_right but returns at most one value.

val fold : ('a -> left -> right -> 'a) -> 'a -> t -> 'a

Fold on pairs.

val pairs : t -> (left * right) sequence

Iterate on pairs.

val add_pairs : t -> (left * right) sequence -> t

Add pairs.

val seq_left : t -> left sequence
val seq_right : t -> right sequence
\ No newline at end of file diff --git a/dev/containers/CCMultiMap/index.html b/dev/containers/CCMultiMap/index.html new file mode 100644 index 00000000..b9d1c5d2 --- /dev/null +++ b/dev/containers/CCMultiMap/index.html @@ -0,0 +1,2 @@ + +CCMultiMap (containers.CCMultiMap)

Module CCMultiMap

Multimap

type 'a sequence = ('a -> unit) -> unit
module type S = sig ... end
module type OrderedType = sig ... end
module Make : functor (K : OrderedType) -> functor (V : OrderedType) -> S with type key = K.t and type value = V.t

Two-Way Multimap

Represents n-to-n mappings between two types. Each element from the "left" is mapped to several right values, and conversely.

since
0.3.3
module type BIDIR = sig ... end
module MakeBidir : functor (L : OrderedType) -> functor (R : OrderedType) -> BIDIR with type left = L.t and type right = R.t
\ No newline at end of file diff --git a/dev/containers/CCMultiMap/module-type-BIDIR/index.html b/dev/containers/CCMultiMap/module-type-BIDIR/index.html new file mode 100644 index 00000000..57ed2553 --- /dev/null +++ b/dev/containers/CCMultiMap/module-type-BIDIR/index.html @@ -0,0 +1,2 @@ + +BIDIR (containers.CCMultiMap.BIDIR)

Module type CCMultiMap.BIDIR

type t
type left
type right
val empty : t
val is_empty : t -> bool
val add : t -> left -> right -> t

Add a binding (left,right).

val remove : t -> left -> right -> t

Remove a specific binding.

val cardinal_left : t -> int

Number of distinct left keys.

val cardinal_right : t -> int

Number of distinct right keys.

val remove_left : t -> left -> t

Remove all bindings for the left key.

val remove_right : t -> right -> t

Remove all bindings for the right key.

val mem_left : t -> left -> bool

Is the left key present in at least one pair?

val mem_right : t -> right -> bool

Is the right key present in at least one pair?

val find_left : t -> left -> right sequence

Find all bindings for this given left-key.

val find_right : t -> right -> left sequence

Find all bindings for this given right-key.

val find1_left : t -> left -> right option

Like find_left but returns at most one value.

val find1_right : t -> right -> left option

Like find_right but returns at most one value.

val fold : ('a -> left -> right -> 'a) -> 'a -> t -> 'a

Fold on pairs.

val pairs : t -> (left * right) sequence

Iterate on pairs.

val add_pairs : t -> (left * right) sequence -> t

Add pairs.

val seq_left : t -> left sequence
val seq_right : t -> right sequence
\ No newline at end of file diff --git a/dev/containers/CCMultiMap/module-type-OrderedType/index.html b/dev/containers/CCMultiMap/module-type-OrderedType/index.html new file mode 100644 index 00000000..e64dcb49 --- /dev/null +++ b/dev/containers/CCMultiMap/module-type-OrderedType/index.html @@ -0,0 +1,2 @@ + +OrderedType (containers.CCMultiMap.OrderedType)

Module type CCMultiMap.OrderedType

type t
val compare : t -> t -> int
\ No newline at end of file diff --git a/dev/containers/CCMultiMap/module-type-S/index.html b/dev/containers/CCMultiMap/module-type-S/index.html new file mode 100644 index 00000000..c9f01fa2 --- /dev/null +++ b/dev/containers/CCMultiMap/module-type-S/index.html @@ -0,0 +1,2 @@ + +S (containers.CCMultiMap.S)

Module type CCMultiMap.S

type key
type value
type t
val empty : t

Empty multimap.

val is_empty : t -> bool

Empty multimap?

val add : t -> key -> value -> t

Add a key/value binding.

val remove : t -> key -> value -> t

Remove the binding.

val remove_all : t -> key -> t

Remove the key from the map.

val mem : t -> key -> bool

Is there a binding for this key?

val find : t -> key -> value list

List of values for this key.

val find_iter : t -> key -> (value -> unit) -> unit

Iterate on bindings for this key.

val count : t -> key -> int

Number of bindings for this key.

val iter : t -> (key -> value -> unit) -> unit

Iterate on all key/value.

val fold : t -> 'a -> ('a -> key -> value -> 'a) -> 'a

Fold on all key/value.

val size : t -> int

Number of keys.

val union : t -> t -> t

Union of multimaps.

val inter : t -> t -> t

Intersection of multimaps.

val diff : t -> t -> t

Difference of maps, i.e. bindings of the first that are not in the second.

val equal : t -> t -> bool

Same multimap.

val compare : t -> t -> int

Total order on multimaps.

val submap : t -> t -> bool

submap m1 m2 is true iff all bindings of m1 are also in m2.

val to_seq : t -> (key * value) sequence
val of_seq : ?⁠init:t -> (key * value) sequence -> t
val keys : t -> key sequence
val values : t -> value sequence

Some values may occur several times.

\ No newline at end of file diff --git a/dev/containers/CCEqual/.jbuilder-keep b/dev/containers/CCMultiSet/.dune-keep similarity index 100% rename from dev/containers/CCEqual/.jbuilder-keep rename to dev/containers/CCMultiSet/.dune-keep diff --git a/dev/containers/CCMultiSet/Make/index.html b/dev/containers/CCMultiSet/Make/index.html new file mode 100644 index 00000000..a684091a --- /dev/null +++ b/dev/containers/CCMultiSet/Make/index.html @@ -0,0 +1,2 @@ + +Make (containers.CCMultiSet.Make)

Module CCMultiSet.Make

Parameters

  • O : Set.OrderedType

Signature

type elt = O.t
type t
val empty : t
val is_empty : t -> bool
val mem : t -> elt -> bool
val count : t -> elt -> int
val singleton : elt -> t
val add : t -> elt -> t
val remove : t -> elt -> t
val add_mult : t -> elt -> int -> t

add_mult set x n adds n occurrences of x to set.

raises Invalid_argument

if n < 0.

since
0.6
val remove_mult : t -> elt -> int -> t

remove_mult set x n removes at most n occurrences of x from set.

raises Invalid_argument

if n < 0.

since
0.6
val remove_all : t -> elt -> t

remove_all set x removes all occurrences of x from set.

since
0.22
val update : t -> elt -> (int -> int) -> t

update set x f calls f n where n is the current multiplicity of x in set (0 to indicate its absence); the result of f n is the new multiplicity of x.

raises Invalid_argument

if f n < 0.

since
0.6
val min : t -> elt

Minimal element w.r.t the total ordering on elements.

val max : t -> elt

Maximal element w.r.t the total ordering on elements.

val union : t -> t -> t

union a b contains as many occurrences of an element x as count a x + count b x.

val meet : t -> t -> t

meet a b is a multiset such that count (meet a b) x = max (count a x) (count b x).

val intersection : t -> t -> t

intersection a b is a multiset such that count (intersection a b) x = min (count a x) (count b x).

val diff : t -> t -> t

MultiSet difference. count (diff a b) x = max (count a x - count b x) 0.

val contains : t -> t -> bool

contains a x = (count m x > 0).

val compare : t -> t -> int
val equal : t -> t -> bool
val cardinal : t -> int

Number of distinct elements.

val iter : t -> (int -> elt -> unit) -> unit
val fold : t -> 'b -> ('b -> int -> elt -> 'b) -> 'b
val of_list : elt list -> t
val to_list : t -> elt list
val to_seq : t -> elt sequence
val of_seq : elt sequence -> t
val of_list_mult : (elt * int) list -> t
since
0.19
val to_list_mult : t -> (elt * int) list
since
0.19
val to_seq_mult : t -> (elt * int) sequence
since
0.19
val of_seq_mult : (elt * int) sequence -> t
since
0.19
\ No newline at end of file diff --git a/dev/containers/CCMultiSet/index.html b/dev/containers/CCMultiSet/index.html new file mode 100644 index 00000000..22608ec1 --- /dev/null +++ b/dev/containers/CCMultiSet/index.html @@ -0,0 +1,2 @@ + +CCMultiSet (containers.CCMultiSet)

Module CCMultiSet

Multiset

type 'a sequence = ('a -> unit) -> unit
module type S = sig ... end
module Make : functor (O : Set.OrderedType) -> S with type elt = O.t
\ No newline at end of file diff --git a/dev/containers/CCMultiSet/module-type-S/index.html b/dev/containers/CCMultiSet/module-type-S/index.html new file mode 100644 index 00000000..a449736d --- /dev/null +++ b/dev/containers/CCMultiSet/module-type-S/index.html @@ -0,0 +1,2 @@ + +S (containers.CCMultiSet.S)

Module type CCMultiSet.S

type elt
type t
val empty : t
val is_empty : t -> bool
val mem : t -> elt -> bool
val count : t -> elt -> int
val singleton : elt -> t
val add : t -> elt -> t
val remove : t -> elt -> t
val add_mult : t -> elt -> int -> t

add_mult set x n adds n occurrences of x to set.

raises Invalid_argument

if n < 0.

since
0.6
val remove_mult : t -> elt -> int -> t

remove_mult set x n removes at most n occurrences of x from set.

raises Invalid_argument

if n < 0.

since
0.6
val remove_all : t -> elt -> t

remove_all set x removes all occurrences of x from set.

since
0.22
val update : t -> elt -> (int -> int) -> t

update set x f calls f n where n is the current multiplicity of x in set (0 to indicate its absence); the result of f n is the new multiplicity of x.

raises Invalid_argument

if f n < 0.

since
0.6
val min : t -> elt

Minimal element w.r.t the total ordering on elements.

val max : t -> elt

Maximal element w.r.t the total ordering on elements.

val union : t -> t -> t

union a b contains as many occurrences of an element x as count a x + count b x.

val meet : t -> t -> t

meet a b is a multiset such that count (meet a b) x = max (count a x) (count b x).

val intersection : t -> t -> t

intersection a b is a multiset such that count (intersection a b) x = min (count a x) (count b x).

val diff : t -> t -> t

MultiSet difference. count (diff a b) x = max (count a x - count b x) 0.

val contains : t -> t -> bool

contains a x = (count m x > 0).

val compare : t -> t -> int
val equal : t -> t -> bool
val cardinal : t -> int

Number of distinct elements.

val iter : t -> (int -> elt -> unit) -> unit
val fold : t -> 'b -> ('b -> int -> elt -> 'b) -> 'b
val of_list : elt list -> t
val to_list : t -> elt list
val to_seq : t -> elt sequence
val of_seq : elt sequence -> t
val of_list_mult : (elt * int) list -> t
since
0.19
val to_list_mult : t -> (elt * int) list
since
0.19
val to_seq_mult : t -> (elt * int) sequence
since
0.19
val of_seq_mult : (elt * int) sequence -> t
since
0.19
\ No newline at end of file diff --git a/dev/containers/CCNativeint.odoc b/dev/containers/CCNativeint.odoc deleted file mode 100644 index ce1416f954efa64f57c41ed29a8bf6aa2133e8d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7521 zcmb_h3v3+48Me>6B)+ue9U(+u;yc@Sv3)+rCP^dPxnM{Mg#Zb(B^0c^yFK4Fd%Kt2 zJ;w(Hp%$d7qOj%>#G}zBJPH&_pwJ**4IrRxpcD#)A_OQDN@yrZ6(FGk{r;KRd)NjQ zwNf7T%=i7T`Df<;XYIV5>l;WdO{Fis`j$spT3UMWSH<7M@%P}JOLDg5X@;dc?)ILs zv2~hfOzMW^WzyU3-re=+&I>*o-n?_)eecY_MbH;1EiLnoZfRL~SWC;H@6K;&iMIq_ zL5LFZgJ9R{OyDQ$ssjAl-g%;KmSF`e*bXZ@c20L)+v&5oK@1k@6PV@D-ZP4Z%Sv{> zV(J8)H1fL3Y_I{gE&OOPuc$MxTGm-GofI-40%|^Hc7eIZgr(=%;L^UV;nieE6X40Q zvZ;A6q~s7J2m@^})onx6o{du@|$i744@X>ik; z!0#AbicoiwOLAb@5XC;t@_Jdf@`g1Lm9g7mJ9+qho=%ogFf}JvG(0`$RUAFVmmzkV z?of<0E2lHdhDG{HHmR8vS`3iph<=LMxm=}Og;}t$q~pITbITe8APUxOc8ssus@|w( z<-f>vYvvlqx&IS7l3Ftna@VxCP*h2SSF~ODL>wWzD-}HxBQw(EL_omYQbY*3_vNx_ z2AE^G`IpL{Sw*B$(AXqV`l}w%zmS(P@P^^6 z`(M50t%G_O4JEF4|GdBM$oM-~xK6G=hgIosI0RDA-rnC|v`c!wYm{uOA8E0PuNSc4 zxzRtKtr%v$Kd%?Gis_~IKJxtLKSW;Jwe8t|+^})Oxqn%m@q=r3E3O}8GSgR0PX|}; zyhFJlexB~wzOvvZ-``r_p&35;lbCJkzOoQ=$^tPooh%tv#U1Ap$I!%KnPBVgJCy5U zmOkMtiF-0Mcr^caaVAK0)^@`<00MhkOv~qeWx2riWyJpjoP&+f$N^Ar9*Vh@tgoCT zuo=lYo^!s{%mGkvo{g0%rmvhMI2$DAyPUJJnFFBU?2YA(Nna@oPC;^hz&WL64uFF5 zVa(A>zVc(isY=cToO4k#2d59FvXhiN@&XUXxE-6d^m9KZX@?`VM@mg8gHSWhwj9F0H8 zJyKgw?lSEOY<6FHMX33c^y&q!?xkk00F=D(PVj8USKbq}Hzn=woc3-e=xay_+mS4X zv`vAgwzde~N0Rpm=Y86&4oGSKB}BxT2jZcesJ6BfLv8(<6n(`Kw`df+aZ@i4ib>Q$ zDZePti<%XfuE++p_2wQycZ`W5@dqV8Df#CMe!7{jxuIwG4>s_}VJuEB6LQu_Im1%U zWkSwavmCP~XHS=1;LD`8p2exk&jn+BCKzZ8DMv})U+MB}Nh(Tx=Mqb~tC=KFlC&=Y zO$F1|$lWcRwzZT0E)>GEET4P^vKuA0c85%QaEtEbb$XZ9N3x(24_W#Ze$!|YUF6LEo9#zZQH?Z!%5dj z3~`d!mxNl^b8vY>?}I{bmlzO=f0GGT%np!5(1EK)M*C_)#_ck#z|&liaxjV5+J!M( zYXQ&jJsGhHBBv)|N=@_Y(&iVr&E1*cirqJ>k#iT5u>HF;8K0Bi%!F*Cn+h9LDwzM6 za{(_ahseZKh3!a8Zs7TyxOFLmBkjVl5Vw#U7|+_a+&YoVx_DIry^*5?RueMS2nQ?0 zOmOUscnAheTdhVqg~lDRL{Adcs-Ik)&l}`^N}m3(^G@Z|Mmv@H(#-o~i9Sy1-B8J* zGRQUZlyLJO$wP#_&s}>ap14qu`p>j96hyeMc%>2QQ+hZa#RJE`7E3JQI{Ht+b!*fL zlNvnS+Zj#^BlxdaqMy@NtQEyH!#%>Ql@wdA8N3EcA1{Z-v(<6Bpivx7F+)^=Jc1)*9_6+Ke!7=KQRE@QRM`d7-BJ`H(#c$`j|)SE z#DZ<2!o>cgW&~Xb+;vw*gX!hu7#kj8p%udn7bvSz367f!h>2$$LV$%r;S|+6K3$77&^}Iwonep zn}Y1Ch53F-e~8n6E9rJ;!n7UE9-PUxof`QWNq&x#Uy$UBp&Pd;XOGNe>r*+iLZvDi zm71KrQqJ34&ORyUTFAjQ%;kJ@rkq*(=wr_PL~?J31FlKb=>(PtKhx4A7{53vri-VL z3CL2O3v`dOEHY_&F;MMss`*`N_H<+tPZQ)<#j2+;c1M+m=A-zZ(ABHL0jp2wdu8$ZtB`#|VBFG3oe&(@rWsraMS(uT)wCErCzOKL+6%f*hsmX`hO zq=q&MzmmUE2Pd7AH___zjuEk>R$FX1ivFtqF~GGgptf!b1HmgowH4(Aofb+*X986d z&jJJjKYo=!49yG#R;%8h%V5xP@Z_IqDi1^A=L=)A=L<)NF?uXaGwB*mP~m@CcLWLBY_u&K;HDIkxPU`)EOg5UsWELu**Xit`zbf5U}^-iQ!Sg zy&!Qxh`UMP_HZ0JtXP8M-jcYxL)?7=_o~Dl98ZjL#UDxFV>O2Yj za|nD%06&w!!B}FLa7Reo-$L9w9M^Uric%D)0@_fyz*p)ip8rrUYm#> zB&;QH51edl!ZALxVo4x^xLT@BWsBOTNd0Z|h5ml2`N23|3X4>8cFrv?MfHPh6xh@Z zsWC20*_H{e^C4r`aoE;N#%v2uQS>Gi7T)R`VRuFjb_;;V@3;xvxt4rJ41I&T*$;Wk zl5{m_Rx~W8LXdb7F{^*m`^XrE#diC=xHu z6^S|Z3X_`6?2YCPH-`&4T&#j@Xi(Loar2NG4mJg@bFf7zpH4PiQ}XS&zQ~jUXbKz@E30(2x%%RZxM_r&~^oNQJ&t1QD|w_gwD>!HuG=y)dRjAz9GR?s*L6E zncv-E1&%L6lrP~>`9eNk>@C$Dm8<<`yY4Ye; zN}5^I()O5Gwo$32($HAzQx@&*FV5k5ClAxxr{-EbX&LRl8A&SwFXwq_q4Atl}R(;A9aWFQgbya~{?o0 z9BS`I-%5!q(wK@@*%LII0Ilr2Cbkoc?0m`7@OEvYy_mc zeyL()3r6~SSr!T4h -Infix (containers.CCNativeint.Infix)

Module CCNativeint.Infix

val (+) : t -> t -> t
val (-) : t -> t -> t
val (~-) : t -> t
val (*) : t -> t -> t
val (/) : t -> t -> t
val (mod) : t -> t -> t
val (land) : t -> t -> t
val (lor) : t -> t -> t
val (lxor) : t -> t -> t
val (lnot) : t -> t
val (lsl) : t -> int -> t
val (lsr) : t -> int -> t
val (asr) : t -> int -> t
val (=) : t -> t -> bool
val (<>) : t -> t -> bool
val (>) : t -> t -> bool
val (>=) : t -> t -> bool
val (<=) : t -> t -> bool
val (<) : t -> t -> bool
\ No newline at end of file +Infix (containers.CCNativeint.Infix)

Module CCNativeint.Infix

val (+) : t -> t -> t
val (-) : t -> t -> t
val (~-) : t -> t
val (*) : t -> t -> t
val (/) : t -> t -> t
val (mod) : t -> t -> t
val (land) : t -> t -> t
val (lor) : t -> t -> t
val (lxor) : t -> t -> t
val (lnot) : t -> t
val (lsl) : t -> int -> t
val (lsr) : t -> int -> t
val (asr) : t -> int -> t
val (=) : t -> t -> bool
val (<>) : t -> t -> bool
val (>) : t -> t -> bool
val (>=) : t -> t -> bool
val (<=) : t -> t -> bool
val (<) : t -> t -> bool
\ No newline at end of file diff --git a/dev/containers/CCNativeint/index.html b/dev/containers/CCNativeint/index.html index 3890d47f..ad263ce0 100644 --- a/dev/containers/CCNativeint/index.html +++ b/dev/containers/CCNativeint/index.html @@ -1,2 +1,2 @@ -CCNativeint (containers.CCNativeint)

Module CCNativeint

Nativeint

Helpers for processor-native integers

This module provides operations on the type nativeint of signed 32-bit integers (on 32-bit platforms) or signed 64-bit integers (on 64-bit platforms). This integer type has exactly the same width as that of a pointer type in the C compiler. All arithmetic operations over nativeint are taken modulo 232 or 264 depending on the word size of the architecture.

Performance notice: values of type nativeint occupy more memory space than values of type int, and arithmetic operations on nativeint are generally slower than those on int. Use nativeint only when the application requires the extra bit of precision over the int type.

since
2.1
include module type of sig ... end
val zero : nativeint
val one : nativeint
val minus_one : nativeint
val neg : nativeint -> nativeint
val add : nativeint -> nativeint -> nativeint
val sub : nativeint -> nativeint -> nativeint
val mul : nativeint -> nativeint -> nativeint
val div : nativeint -> nativeint -> nativeint
val rem : nativeint -> nativeint -> nativeint
val succ : nativeint -> nativeint
val pred : nativeint -> nativeint
val abs : nativeint -> nativeint
val size : int
val max_int : nativeint
val min_int : nativeint
val logand : nativeint -> nativeint -> nativeint
val logor : nativeint -> nativeint -> nativeint
val logxor : nativeint -> nativeint -> nativeint
val lognot : nativeint -> nativeint
val shift_left : nativeint -> int -> nativeint
val shift_right : nativeint -> int -> nativeint
val shift_right_logical : nativeint -> int -> nativeint
val of_int : int -> nativeint
val to_int : nativeint -> int
val of_float : float -> nativeint
val to_float : nativeint -> float
val of_int32 : int32 -> nativeint
val to_int32 : nativeint -> int32
val of_string : string -> nativeint
val of_string_opt : string -> nativeint option
val to_string : nativeint -> string
type t = nativeint
val compare : t -> t -> int
val equal : t -> t -> bool
val format : string -> nativeint -> string
val (+) : t -> t -> t

Addition.

val (-) : t -> t -> t

Subtraction.

val (~-) : t -> t

Unary negation.

val (*) : t -> t -> t

Multiplication.

val (/) : t -> t -> t

Integer division. Raise Division_by_zero if the second argument is zero. This division rounds the real quotient of its arguments towards zero, as specified for Pervasives.(/).

val (mod) : t -> t -> t

x mod y is the integer remainder. If y <> zero, the result of x mod y satisfies the following properties: zero <= x mod y < abs y and x = ((x / y) * y) + (x mod y). If y = 0, x mod y raises Division_by_zero.

val (land) : t -> t -> t

Bitwise logical and.

val (lor) : t -> t -> t

Bitwise logical or.

val (lxor) : t -> t -> t

Bitwise logical exclusive or.

val (lnot) : t -> t

Bitwise logical negation.

val (lsl) : t -> int -> t

x lsl y shifts x to the left by y bits. The result is unspecified if y < 0 or y >= bitsize, where bitsize is 32 on a 32-bit platform and 64 on a 64-bit platform.

val (lsr) : t -> int -> t

x lsr y shifts x to the right by y bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of x. The result is unspecified if y < 0 or y >= bitsize.

val (asr) : t -> int -> t

x asr y shifts x to the right by y bits. This is an arithmetic shift: the sign bit of x is replicated and inserted in the vacated bits. The result is unspecified if y < 0 or y >= bitsize.

module Infix : sig ... end
val equal : t -> t -> bool

The equal function for native integers. Like Pervasives.(=) x y).

val hash : t -> int

Like Pervasives.abs (to_int x).

Conversion

val to_int : t -> int

Convert the given native integer (type nativeint) to an integer (type int). The high-order bit is lost during the conversion.

val of_int : int -> t

Alias to Nativeint.of_int. Convert the given integer (type int) to a native integer (type nativeint).

val to_float : t -> float

Convert the given native integer to a floating-point number.

val of_float : float -> t

Alias to Nativeint.of_float. Convert the given floating-point number to a native integer, discarding the fractional part (truncate towards 0). The result of the conversion is undefined if, after truncation, the number is outside the range [CCNativeint.min_int, CCNativeint.max_int].

val to_string : t -> string

Return the string representation of its argument, in decimal.

val of_string_exn : string -> t

Alias to Nativeint.of_string. Convert the given string to a native integer. The string is read in decimal (by default, or if the string begins with 0u) or in hexadecimal, octal or binary if the string begins with 0x, 0o or 0b respectively.

The 0u prefix reads the input as an unsigned integer in the range [0, 2*CCNativeint.max_int+1]. If the input exceeds CCNativeint.max_int it is converted to the signed integer CCInt64.min_int + input - CCNativeint.max_int - 1.

Raise Failure "Nativeint.of_string" if the given string is not a valid representation of an integer, or if the integer represented exceeds the range of integers representable in type nativeint.

val of_string : string -> t option

Safe version of of_string_exn. Like of_string_exn, but return None instead of raising.

val of_string_opt : string -> t option

Alias to of_string.

\ No newline at end of file +CCNativeint (containers.CCNativeint)

Module CCNativeint

Nativeint

Helpers for processor-native integers

This module provides operations on the type nativeint of signed 32-bit integers (on 32-bit platforms) or signed 64-bit integers (on 64-bit platforms). This integer type has exactly the same width as that of a pointer type in the C compiler. All arithmetic operations over nativeint are taken modulo 232 or 264 depending on the word size of the architecture.

Performance notice: values of type nativeint occupy more memory space than values of type int, and arithmetic operations on nativeint are generally slower than those on int. Use nativeint only when the application requires the extra bit of precision over the int type.

since
2.1
include module type of sig ... end
val zero : nativeint
val one : nativeint
val minus_one : nativeint
val neg : nativeint -> nativeint
val add : nativeint -> nativeint -> nativeint
val sub : nativeint -> nativeint -> nativeint
val mul : nativeint -> nativeint -> nativeint
val div : nativeint -> nativeint -> nativeint
val rem : nativeint -> nativeint -> nativeint
val succ : nativeint -> nativeint
val pred : nativeint -> nativeint
val abs : nativeint -> nativeint
val size : int
val max_int : nativeint
val min_int : nativeint
val logand : nativeint -> nativeint -> nativeint
val logor : nativeint -> nativeint -> nativeint
val logxor : nativeint -> nativeint -> nativeint
val lognot : nativeint -> nativeint
val shift_left : nativeint -> int -> nativeint
val shift_right : nativeint -> int -> nativeint
val shift_right_logical : nativeint -> int -> nativeint
val of_int : int -> nativeint
val to_int : nativeint -> int
val of_float : float -> nativeint
val to_float : nativeint -> float
val of_int32 : int32 -> nativeint
val to_int32 : nativeint -> int32
val of_string : string -> nativeint
val of_string_opt : string -> nativeint option
val to_string : nativeint -> string
type t = nativeint
val compare : t -> t -> int
val equal : t -> t -> bool
val format : string -> nativeint -> string
val (+) : t -> t -> t

Addition.

val (-) : t -> t -> t

Subtraction.

val (~-) : t -> t

Unary negation.

val (*) : t -> t -> t

Multiplication.

val (/) : t -> t -> t

Integer division. Raise Division_by_zero if the second argument is zero. This division rounds the real quotient of its arguments towards zero, as specified for Pervasives.(/).

val (mod) : t -> t -> t

x mod y is the integer remainder. If y <> zero, the result of x mod y satisfies the following properties: zero <= x mod y < abs y and x = ((x / y) * y) + (x mod y). If y = 0, x mod y raises Division_by_zero.

val (land) : t -> t -> t

Bitwise logical and.

val (lor) : t -> t -> t

Bitwise logical or.

val (lxor) : t -> t -> t

Bitwise logical exclusive or.

val (lnot) : t -> t

Bitwise logical negation.

val (lsl) : t -> int -> t

x lsl y shifts x to the left by y bits. The result is unspecified if y < 0 or y >= bitsize, where bitsize is 32 on a 32-bit platform and 64 on a 64-bit platform.

val (lsr) : t -> int -> t

x lsr y shifts x to the right by y bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of x. The result is unspecified if y < 0 or y >= bitsize.

val (asr) : t -> int -> t

x asr y shifts x to the right by y bits. This is an arithmetic shift: the sign bit of x is replicated and inserted in the vacated bits. The result is unspecified if y < 0 or y >= bitsize.

module Infix : sig ... end
val equal : t -> t -> bool

The equal function for native integers. Like Pervasives.(=) x y).

val hash : t -> int

Like Pervasives.abs (to_int x).

Conversion

val to_int : t -> int

Convert the given native integer (type nativeint) to an integer (type int). The high-order bit is lost during the conversion.

val of_int : int -> t

Alias to Nativeint.of_int. Convert the given integer (type int) to a native integer (type nativeint).

val to_float : t -> float

Convert the given native integer to a floating-point number.

val of_float : float -> t

Alias to Nativeint.of_float. Convert the given floating-point number to a native integer, discarding the fractional part (truncate towards 0). The result of the conversion is undefined if, after truncation, the number is outside the range [CCNativeint.min_int, CCNativeint.max_int].

val to_string : t -> string

Return the string representation of its argument, in decimal.

val of_string_exn : string -> t

Alias to Nativeint.of_string. Convert the given string to a native integer. The string is read in decimal (by default, or if the string begins with 0u) or in hexadecimal, octal or binary if the string begins with 0x, 0o or 0b respectively.

The 0u prefix reads the input as an unsigned integer in the range [0, 2*CCNativeint.max_int+1]. If the input exceeds CCNativeint.max_int it is converted to the signed integer CCInt64.min_int + input - CCNativeint.max_int - 1.

Raise Failure "Nativeint.of_string" if the given string is not a valid representation of an integer, or if the integer represented exceeds the range of integers representable in type nativeint.

val of_string : string -> t option

Safe version of of_string_exn. Like of_string_exn, but return None instead of raising.

val of_string_opt : string -> t option

Alias to of_string.

\ No newline at end of file diff --git a/dev/containers/CCOpt.odoc b/dev/containers/CCOpt.odoc deleted file mode 100644 index a798bf4c286bb6d2233a0530af0bc7fc96315236..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6412 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 diff --git a/dev/containers/CCFormat/.jbuilder-keep b/dev/containers/CCOpt/.dune-keep similarity index 100% rename from dev/containers/CCFormat/.jbuilder-keep rename to dev/containers/CCOpt/.dune-keep diff --git a/dev/containers/CCOpt/Infix/index.html b/dev/containers/CCOpt/Infix/index.html index 9e7629ed..490f12bc 100644 --- a/dev/containers/CCOpt/Infix/index.html +++ b/dev/containers/CCOpt/Infix/index.html @@ -1,2 +1,2 @@ -Infix (containers.CCOpt.Infix)

Module CCOpt.Infix

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

x >|= f is map f x.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

f <*> (Some x) returns Some (f x) and f <*> None returns None.

val (<$>) : ('a -> 'b) -> 'a t -> 'b t

Like map.

val (<+>) : 'a t -> 'a t -> 'a t

a <+> b is a if a is Some _, b otherwise.

\ No newline at end of file +Infix (containers.CCOpt.Infix)

Module CCOpt.Infix

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

x >|= f is map f x.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

f <*> (Some x) returns Some (f x) and f <*> None returns None.

val (<$>) : ('a -> 'b) -> 'a t -> 'b t

Like map.

val (<+>) : 'a t -> 'a t -> 'a t

a <+> b is a if a is Some _, b otherwise.

\ No newline at end of file diff --git a/dev/containers/CCOpt/index.html b/dev/containers/CCOpt/index.html index 294ad56d..d3b50a36 100644 --- a/dev/containers/CCOpt/index.html +++ b/dev/containers/CCOpt/index.html @@ -1,2 +1,2 @@ -CCOpt (containers.CCOpt)

Module CCOpt

Options

type +'a t = 'a option
val map : ('a -> 'b) -> 'a t -> 'b t

Transform the element inside, if any.

val map_or : default:'b -> ('a -> 'b) -> 'a t -> 'b

map_or ~default f o is f x if o = Some x, default otherwise.

since
0.16
val map_lazy : (unit -> 'b) -> ('a -> 'b) -> 'a t -> 'b

map_lazy default_fn f o if f o if o = Some x, default_fn () otherwise.

since
1.2
val is_some : _ t -> bool

is_some (Some x) returns true otherwise it returns false.

val is_none : _ t -> bool

is_none None returns true otherwise it returns false.

since
0.11
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int

Compare two options, using custom comparators for the value. None is always assumed to be less than Some _.

val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool

Test for equality between option types using a custom equality predicat.

val return : 'a -> 'a t

Monadic return, that is return x = Some x.

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Infix version of map.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

val flat_map : ('a -> 'b t) -> 'a t -> 'b t

Flip version of >>=.

val map2 : ('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t

map2 f o1 o2 maps 'a option and 'b option to a 'c option using f.

val iter : ('a -> unit) -> 'a t -> unit

Iterate on 0 or 1 element.

val fold : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a

Fold on 0 or 1 element.

val filter : ('a -> bool) -> 'a t -> 'a t

Filter on 0 or 1 element.

since
0.5
val if_ : ('a -> bool) -> 'a -> 'a option

if_ f x is Some x if f x, None otherwise.

since
0.17
val exists : ('a -> bool) -> 'a t -> bool

Return true iff there exists an element for which the provided function evaluates to true.

since
0.17
val for_all : ('a -> bool) -> 'a t -> bool

Return true iff the provided function evaluates to true for all elements.

since
0.17
val get_or : default:'a -> 'a t -> 'a

get_or ~default o extracts the value from o, or returns default if o = None.

since
0.18
val get_exn : 'a t -> 'a

Open the option, possibly failing if it is None.

raises Invalid_argument

if the option is None.

val get_lazy : (unit -> 'a) -> 'a t -> 'a

get_lazy default_fn x unwraps x, but if x = None it returns default_fn () instead.

since
0.6.1
val sequence_l : 'a t list -> 'a list t

sequence_l [x1; x2; ...; xn] returns Some [y1;y2;...;yn] if every xi is Some yi. Otherwise, if the list contains at least one None, the result is None.

val wrap : ?⁠handler:(exn -> bool) -> ('a -> 'b) -> 'a -> 'b option

wrap f x calls f x and returns Some y if f x = y. If f x raises any exception, the result is None. This can be useful to wrap functions such as Map.S.find.

parameter handler

the exception handler, which returns true if the exception is to be caught.

val wrap2 : ?⁠handler:(exn -> bool) -> ('a -> 'b -> 'c) -> 'a -> 'b -> 'c option

wrap2 f x y is similar to wrap but for binary functions.

Applicative

val pure : 'a -> 'a t

Alias to return.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

f <*> (Some x) returns Some (f x) and f <*> None returns None.

val (<$>) : ('a -> 'b) -> 'a t -> 'b t

Like map.

Alternatives

val or_ : else_:'a t -> 'a t -> 'a t

or_ ~else_ a is a if a is Some _, else_ otherwise.

since
1.2
val or_lazy : else_:(unit -> 'a t) -> 'a t -> 'a t

or_lazy ~else_ a is a if a is Some _, else_ () otherwise.

since
1.2
val (<+>) : 'a t -> 'a t -> 'a t

a <+> b is a if a is Some _, b otherwise.

val choice : 'a t list -> 'a t

choice returns the first non-None element of the list, or None.

val flatten : 'a t t -> 'a t

flatten transforms Some x into x.

since
2.2
val return_if : bool -> 'a -> 'a t

Apply Some or None depending on a boolean. More precisely, return_if false x is None, and return_if true x is Some x.

since
2.2

Infix Operators

since
0.16
module Infix : sig ... end

Conversion and IO

val to_list : 'a t -> 'a list
val of_list : 'a list -> 'a t

Head of list, or None.

val to_result : 'e -> 'a t -> ('a'e) Result.result
since
1.2
val to_result_lazy : (unit -> 'e) -> 'a t -> ('a'e) Result.result
since
1.2
val of_result : ('a_) Result.result -> 'a t
since
1.2
type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
type 'a printer = Format.formatter -> 'a -> unit
type 'a random_gen = Random.State.t -> 'a
val random : 'a random_gen -> 'a t random_gen
val choice_seq : 'a t sequence -> 'a t

choice_seq s is similar to choice, but works on sequences. It returns the first Some x occurring in s, or None otherwise.

since
0.13
val to_gen : 'a t -> 'a gen
val to_seq : 'a t -> 'a sequence
val pp : 'a printer -> 'a t printer
\ No newline at end of file +CCOpt (containers.CCOpt)

Module CCOpt

Options

type +'a t = 'a option
val map : ('a -> 'b) -> 'a t -> 'b t

Transform the element inside, if any.

val map_or : default:'b -> ('a -> 'b) -> 'a t -> 'b

map_or ~default f o is f x if o = Some x, default otherwise.

since
0.16
val map_lazy : (unit -> 'b) -> ('a -> 'b) -> 'a t -> 'b

map_lazy default_fn f o if f o if o = Some x, default_fn () otherwise.

since
1.2
val is_some : _ t -> bool

is_some (Some x) returns true otherwise it returns false.

val is_none : _ t -> bool

is_none None returns true otherwise it returns false.

since
0.11
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int

Compare two options, using custom comparators for the value. None is always assumed to be less than Some _.

val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool

Test for equality between option types using a custom equality predicat.

val return : 'a -> 'a t

Monadic return, that is return x = Some x.

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Infix version of map.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

val flat_map : ('a -> 'b t) -> 'a t -> 'b t

Flip version of >>=.

val map2 : ('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t

map2 f o1 o2 maps 'a option and 'b option to a 'c option using f.

val iter : ('a -> unit) -> 'a t -> unit

Iterate on 0 or 1 element.

val fold : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a

Fold on 0 or 1 element.

val filter : ('a -> bool) -> 'a t -> 'a t

Filter on 0 or 1 element.

since
0.5
val if_ : ('a -> bool) -> 'a -> 'a option

if_ f x is Some x if f x, None otherwise.

since
0.17
val exists : ('a -> bool) -> 'a t -> bool

Return true iff there exists an element for which the provided function evaluates to true.

since
0.17
val for_all : ('a -> bool) -> 'a t -> bool

Return true iff the provided function evaluates to true for all elements.

since
0.17
val get_or : default:'a -> 'a t -> 'a

get_or ~default o extracts the value from o, or returns default if o = None.

since
0.18
val get_exn : 'a t -> 'a

Open the option, possibly failing if it is None.

raises Invalid_argument

if the option is None.

val get_lazy : (unit -> 'a) -> 'a t -> 'a

get_lazy default_fn x unwraps x, but if x = None it returns default_fn () instead.

since
0.6.1
val sequence_l : 'a t list -> 'a list t

sequence_l [x1; x2; ...; xn] returns Some [y1;y2;...;yn] if every xi is Some yi. Otherwise, if the list contains at least one None, the result is None.

val wrap : ?⁠handler:(exn -> bool) -> ('a -> 'b) -> 'a -> 'b option

wrap f x calls f x and returns Some y if f x = y. If f x raises any exception, the result is None. This can be useful to wrap functions such as Map.S.find.

parameter handler

the exception handler, which returns true if the exception is to be caught.

val wrap2 : ?⁠handler:(exn -> bool) -> ('a -> 'b -> 'c) -> 'a -> 'b -> 'c option

wrap2 f x y is similar to wrap but for binary functions.

Applicative

val pure : 'a -> 'a t

Alias to return.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

f <*> (Some x) returns Some (f x) and f <*> None returns None.

val (<$>) : ('a -> 'b) -> 'a t -> 'b t

Like map.

Alternatives

val or_ : else_:'a t -> 'a t -> 'a t

or_ ~else_ a is a if a is Some _, else_ otherwise.

since
1.2
val or_lazy : else_:(unit -> 'a t) -> 'a t -> 'a t

or_lazy ~else_ a is a if a is Some _, else_ () otherwise.

since
1.2
val (<+>) : 'a t -> 'a t -> 'a t

a <+> b is a if a is Some _, b otherwise.

val choice : 'a t list -> 'a t

choice returns the first non-None element of the list, or None.

val flatten : 'a t t -> 'a t

flatten transforms Some x into x.

since
2.2
val return_if : bool -> 'a -> 'a t

Apply Some or None depending on a boolean. More precisely, return_if false x is None, and return_if true x is Some x.

since
2.2

Infix Operators

since
0.16
module Infix : sig ... end

Conversion and IO

val to_list : 'a t -> 'a list
val of_list : 'a list -> 'a t

Head of list, or None.

val to_result : 'e -> 'a t -> ('a'e) Result.result
since
1.2
val to_result_lazy : (unit -> 'e) -> 'a t -> ('a'e) Result.result
since
1.2
val of_result : ('a_) Result.result -> 'a t
since
1.2
type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
type 'a printer = Format.formatter -> 'a -> unit
type 'a random_gen = Random.State.t -> 'a
val random : 'a random_gen -> 'a t random_gen
val choice_seq : 'a t sequence -> 'a t

choice_seq s is similar to choice, but works on sequences. It returns the first Some x occurring in s, or None otherwise.

since
0.13
val to_gen : 'a t -> 'a gen
val to_seq : 'a t -> 'a sequence
val pp : 'a printer -> 'a t printer
\ No newline at end of file diff --git a/dev/containers/CCOrd.odoc b/dev/containers/CCOrd.odoc deleted file mode 100644 index 217c4ce1cc4b111a003175e4875e7cb57aa6dc42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2532 zcmdT_UuauZ7*FGkTcV7iJ}5FhZId=>(%@T^Hzz*$rxvuJC@pA5A4;#P47M5 z|L^<#zQfAQ85+)w7{EYzBy}) z)e)aNd53Y5*R|%rb3C7)V^xy(X_a~TMaGZ&HS7@3YBwf-v{a{VIbS9fTz7-Qm&fK$ z-Wps!*7zviSev=`&>maJr3>e+zU}}j74dzYGEq8U0d^7NWx}a9n?WTKEE3|OV38r> zk}B~6KZ}An93W1DI`@2pJp}dUZ2JOu>&DP2v1Y@I{&`b~m0l3TsXVp%jh1216-|-(I$cn9>4PS3*-8eyPM`xrh*m046wzgN5`YqY=pdBHK?GtSSIPB2<0jyw z3cHdlG3JIfzN88kQfF^XN|nk}ru{6IBUSliU`loGC(Gox}&dlJ?TrEo-BXN_nz zRdE>(gf*aK$F*^I1PZSSsBV4ImSWfAq(L1v%dr9}g7KE9hXcyI_7pCr(hp6HXTYE} z;tV5rM`@UO7B#Y{nUP}j`f%G-BkUvD>T!mpNJ6*T?`cGRC(5iBd`qz#1}}v`%_Uj$uXVCfsmhR82qLzP}tdU@ z8k}Fnu1mP0vj?qjg1B!6mJ2$nx^2tlWFa>^YGD4`^}v6Is12R#QmTg7T;wKDJ@!B`X>;srGV#jg;)YU80w-E-6|)kuOYnuVLeL#%X+IIx9)7=I(l zU^Y?X?7yV_2CQILfq45+n&f74<`4tL;btkL3MFniqnQWEcnL!$l^O#U8~>1#j}~b# z2U&!49?T^=RBVmv%KQLGv5Aqei`tC$+f?tcdO*`<0QF;7Ib*2QRNbIFQK1|hsXPFx z`es=J3<6*PK&I&%&|U+k%evF*Ziq$iOQpx3e^~7`v2(vyp$(+hK6b&4;)8r!0CAoL zS_8a8T*tb8(7rk$^!R@by^3GX#-hcP_60NlwAIp=Q2hV7KiefoA8qfISajSJ+F2~I f=rbDZ*5RA#=GQlLGy2@WbTjJeAaMKG0-nDBxT3q@ diff --git a/dev/containers/CCFun/.jbuilder-keep b/dev/containers/CCOrd/.dune-keep similarity index 100% rename from dev/containers/CCFun/.jbuilder-keep rename to dev/containers/CCOrd/.dune-keep diff --git a/dev/containers/CCOrd/Infix/index.html b/dev/containers/CCOrd/Infix/index.html index c8488e04..a2bd594d 100644 --- a/dev/containers/CCOrd/Infix/index.html +++ b/dev/containers/CCOrd/Infix/index.html @@ -1,2 +1,2 @@ -Infix (containers.CCOrd.Infix)

Module CCOrd.Infix

val (<?>) : int -> ('a t * 'a * 'a) -> int

c1 <?> (ord, x, y) returns the same as c1 if c1 is not 0; otherwise it uses ord to compare the two values x and y, of type 'a.

val (>|=) : 'b t -> ('a -> 'b) -> 'a t

Infix equivalent of map.

\ No newline at end of file +Infix (containers.CCOrd.Infix)

Module CCOrd.Infix

val (<?>) : int -> ('a t * 'a * 'a) -> int

c1 <?> (ord, x, y) returns the same as c1 if c1 is not 0; otherwise it uses ord to compare the two values x and y, of type 'a.

val (>|=) : 'b t -> ('a -> 'b) -> 'a t

Infix equivalent of map.

\ No newline at end of file diff --git a/dev/containers/CCOrd/index.html b/dev/containers/CCOrd/index.html index fd188628..1551d454 100644 --- a/dev/containers/CCOrd/index.html +++ b/dev/containers/CCOrd/index.html @@ -1,6 +1,6 @@ -CCOrd (containers.CCOrd)

Module CCOrd

Comparisons

type 'a t = 'a -> 'a -> int

Comparison (total ordering) between two elements, that returns an int.

val compare : 'a t

Polymorphic "magic" comparison.

val opp : 'a t -> 'a t

Opposite order.

val equiv : int -> int -> bool

Returns true iff the two comparison results are the same.

val int : int t
val string : string t
val bool : bool t
val float : float t

Lexicographic Combination

val (<?>) : int -> ('a t * 'a * 'a) -> int

c1 <?> (ord, x, y) returns the same as c1 if c1 is not 0; otherwise it uses ord to compare the two values x and y, of type 'a.

Example:

CCInt.compare 1 3
-      <?> (String.compare, "a", "b")
-      <?> (CCBool.compare, true, false)

Same example, using only CCOrd::

CCOrd.(int 1 3
-        <?> (string, "a", "b")
-        <?> (bool, true, false))
val option : 'a t -> 'a option t

Comparison of optional values. None is smaller than any Some _.

since
0.15
val pair : 'a t -> 'b t -> ('a * 'b) t
val triple : 'a t -> 'b t -> 'c t -> ('a * 'b * 'c) t
val list : 'a t -> 'a list t

Lexicographic combination on lists.

val array : 'a t -> 'a array t
val map : ('a -> 'b) -> 'b t -> 'a t

map f ord is the comparison function that, given objects x and y, projects x and y using f (e.g. using a record field) and then compares those projections with ord. Example: map fst CCInt.compare compares values of type (int * 'a) by their first component.

val (>|=) : 'b t -> ('a -> 'b) -> 'a t

Infix equivalent of map.

module Infix : sig ... end
\ No newline at end of file +CCOrd (containers.CCOrd)

Module CCOrd

Comparisons

type 'a t = 'a -> 'a -> int

Comparison (total ordering) between two elements, that returns an int.

val compare : 'a t

Polymorphic "magic" comparison.

val opp : 'a t -> 'a t

Opposite order.

val equiv : int -> int -> bool

Returns true iff the two comparison results are the same.

val int : int t
val string : string t
val bool : bool t
val float : float t

Lexicographic Combination

val (<?>) : int -> ('a t * 'a * 'a) -> int

c1 <?> (ord, x, y) returns the same as c1 if c1 is not 0; otherwise it uses ord to compare the two values x and y, of type 'a.

Example:

CCInt.compare 1 3
+<?> (String.compare, "a", "b")
+<?> (CCBool.compare, true, false)

Same example, using only CCOrd::

CCOrd.(int 1 3
+  <?> (string, "a", "b")
+  <?> (bool, true, false))
val option : 'a t -> 'a option t

Comparison of optional values. None is smaller than any Some _.

since
0.15
val pair : 'a t -> 'b t -> ('a * 'b) t
val triple : 'a t -> 'b t -> 'c t -> ('a * 'b * 'c) t
val list : 'a t -> 'a list t

Lexicographic combination on lists.

val array : 'a t -> 'a array t
val map : ('a -> 'b) -> 'b t -> 'a t

map f ord is the comparison function that, given objects x and y, projects x and y using f (e.g. using a record field) and then compares those projections with ord. Example: map fst CCInt.compare compares values of type (int * 'a) by their first component.

val (>|=) : 'b t -> ('a -> 'b) -> 'a t

Infix equivalent of map.

module Infix : sig ... end
\ No newline at end of file diff --git a/dev/containers/CCPair.odoc b/dev/containers/CCPair.odoc deleted file mode 100644 index 11ff9832860fe3caa4a85af63d25b088739c3253..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2542 zcmb_eU2GIp6y9BS42#+jHPK*@yX=2yceVvlOj`yPOGs=iDfo-QyR&z8M`q>@^V4=Q zQDcZN`Y;OtLLlU#l=xt@At6K_OcOK>51RNB6Nx6i5Mv;L7oL3a+&i;$3y3xGVYc^9 z@BPlX-}%mWht{duKTsYlR}LOI`&BF!%flnV^B6oUXM0s@d04lIRYO(Q_EEpCAplj{8nGnh!a#!p4hnQhvBKwZ}xwCb9D4tiLw4_b&Oinq>kOx)u3`~ zd{#d3;>Ffw=lS_7r@p(y*t1n^8oK2X$HK-abxiDS#jdWpL8bNiM?DuNzSy^I&F{Nj znm_g+L<$!Kl~s>V9M6s(*?F_DedokaKb~i-cbqtruyK;W&J)S&zaG1~vTyZ<;-MP{ ze)*WO+-|jrA;njX9qtq7FG+82|MF+=om<~4!R&h1QDv1nL=G7&Lp~{4Zc>xTu5MCG zo}$h^*TyP=WgWidy)|Dq>T;cE*f+dN&r{Xcj;G!;(4+I$ubjNRXNwZBLvu69r_)}* z6lIRFAdMCNTLapH!+aV|*pb=Kl4DsD?<2r;kV=oi2w~(2wl#;ENcUW%Qq!guu{^h| zu*2C(d0?Y*P5~JHQ#%s`Gs!oT>u%!;)VBcD9styKKOZ0s6{q`9tHgp5a){?UmWx=s zSkzGTI$c%(RKNo0Ii-`QDn>OxR~3PLh$9bnkO%(}8E`cb@LtF&&sHGwQ7uHim;q!? z#JY)=MXi>JJc`(-!RbN~_4f9nlA^F+a~X|c8&M0@sMkcUUMDW1T8FjnQ>fv2YC*cb zaGu)jsP!=FA4Q0|*Ttr&LGA?|N&rEFAh`*`rJh4I-$SlVR2>`o0a8aAb&w4W=b|Yc zG9U&qd2M(SUXvh>guIqbx>M;QG(0vZG(5Hx?SbINw;03C88-F~jLl*~9{K-f_ z9bF#H`j+lNavd?%6i{pOVL`kUH?!_kSnyPO0!HG*3u5mOD!M_Cxd6jQoI+?Ual{XD z#i600k~rYnNFSU(gJ@7Z(8%3j|1NbYK9ehsjEsb^nJ!pIZ#0*NdoQ6&@vn155VXJ@ zj$r>EHB0e7bH#i<&!O7|4Z#pKSdc|JZ}$NZ5}HQ+BhZ=9o((h&dh08r9bDiBw;IkF zuYm7iVe|+Lny&DsC@9|H{D`SLYt5hkK|0^G(uw=+-<48WZgE_h^qrG-dBOyEAkEvbmq})jZz~jvDnOSm*hi>I=H(I{J(3$7EH_)cqOqz0Qkc@fis|^|BegSsFb)- zupRN40Js;U+Z4?0oO0%qwv_m-1a=Ic4q!ll52uBcr1)95X@x+RJ+RgmS4!%YagGAl z1h?+USFwet&2^3qpb~P&9(cPT9ht;y(#Y)jPA*-7)h0I*-YFg1=RytI8Q9JV%)1^e eZa^w9n~|2S3h(7`4xdci^f_rgY{APQ*S`U|sng>C diff --git a/dev/containers/CCHash/.jbuilder-keep b/dev/containers/CCPair/.dune-keep similarity index 100% rename from dev/containers/CCHash/.jbuilder-keep rename to dev/containers/CCPair/.dune-keep diff --git a/dev/containers/CCPair/index.html b/dev/containers/CCPair/index.html index 819a637d..dd6209c4 100644 --- a/dev/containers/CCPair/index.html +++ b/dev/containers/CCPair/index.html @@ -1,2 +1,2 @@ -CCPair (containers.CCPair)

Module CCPair

Tuple Functions

type ('a, 'b) t = 'a * 'b
val make : 'a -> 'b -> ('a'b) t

Make a tuple from its components.

since
0.16
val map1 : ('a -> 'b) -> ('a * 'c) -> 'b * 'c

map1 f (x, y) returns (f x, y).

val map2 : ('a -> 'b) -> ('c * 'a) -> 'c * 'b

map2 f (x, y) returns (x, f y).

val map : ('a -> 'c) -> ('b -> 'd) -> ('a * 'b) -> 'c * 'd

Synonym to ( *** ). Map on both sides of a tuple.

val map_same : ('a -> 'b) -> ('a * 'a) -> 'b * 'b

Like map but specialized for pairs with elements of the same type.

val map_fst : ('a -> 'b) -> ('a * _) -> 'b

Compose the given function with fst.

since
0.3.3
val map_snd : ('a -> 'b) -> (_ * 'a) -> 'b

Compose the given function with snd.

since
0.3.3
val iter : ('a -> 'b -> unit) -> ('a * 'b) -> unit
val swap : ('a * 'b) -> 'b * 'a

Swap the components of the tuple.

val (<<<) : ('a -> 'b) -> ('a * 'c) -> 'b * 'c

Map on the left side of the tuple.

val (>>>) : ('a -> 'b) -> ('c * 'a) -> 'c * 'b

Map on the right side of the tuple.

val (***) : ('a -> 'c) -> ('b -> 'd) -> ('a * 'b) -> 'c * 'd

Map on both sides of a tuple.

val (&&&) : ('a -> 'b) -> ('a -> 'c) -> 'a -> 'b * 'c

f &&& g is fun x -> f x, g x. It splits the computations into two parts.

val merge : ('a -> 'b -> 'c) -> ('a * 'b) -> 'c

Uncurrying (merges the two components of a tuple).

val fold : ('a -> 'b -> 'c) -> ('a * 'b) -> 'c

Synonym to merge.

since
0.3.3
val dup : 'a -> 'a * 'a

dup x = (x,x) (duplicate the value).

since
0.3.3
val dup_map : ('a -> 'b) -> 'a -> 'a * 'b

dup_map f x = (x, f x). Duplicates the value and applies the function to the second copy.

since
0.3.3
val equal : ('a -> 'a -> bool) -> ('b -> 'b -> bool) -> ('a * 'b) -> ('a * 'b) -> bool
val compare : ('a -> 'a -> int) -> ('b -> 'b -> int) -> ('a * 'b) -> ('a * 'b) -> int
type 'a printer = Format.formatter -> 'a -> unit
val pp : ?⁠sep:string -> 'a printer -> 'b printer -> ('a * 'b) printer

Print a pair given an optional separator and a method for printing each of its elements.

\ No newline at end of file +CCPair (containers.CCPair)

Module CCPair

Tuple Functions

type ('a, 'b) t = 'a * 'b
val make : 'a -> 'b -> ('a'b) t

Make a tuple from its components.

since
0.16
val map1 : ('a -> 'b) -> ('a * 'c) -> 'b * 'c

map1 f (x, y) returns (f x, y).

val map2 : ('a -> 'b) -> ('c * 'a) -> 'c * 'b

map2 f (x, y) returns (x, f y).

val map : ('a -> 'c) -> ('b -> 'd) -> ('a * 'b) -> 'c * 'd

Synonym to ( *** ). Map on both sides of a tuple.

val map_same : ('a -> 'b) -> ('a * 'a) -> 'b * 'b

Like map but specialized for pairs with elements of the same type.

val map_fst : ('a -> 'b) -> ('a * _) -> 'b

Compose the given function with fst.

since
0.3.3
val map_snd : ('a -> 'b) -> (_ * 'a) -> 'b

Compose the given function with snd.

since
0.3.3
val iter : ('a -> 'b -> unit) -> ('a * 'b) -> unit
val swap : ('a * 'b) -> 'b * 'a

Swap the components of the tuple.

val (<<<) : ('a -> 'b) -> ('a * 'c) -> 'b * 'c

Map on the left side of the tuple.

val (>>>) : ('a -> 'b) -> ('c * 'a) -> 'c * 'b

Map on the right side of the tuple.

val (***) : ('a -> 'c) -> ('b -> 'd) -> ('a * 'b) -> 'c * 'd

Map on both sides of a tuple.

val (&&&) : ('a -> 'b) -> ('a -> 'c) -> 'a -> 'b * 'c

f &&& g is fun x -> f x, g x. It splits the computations into two parts.

val merge : ('a -> 'b -> 'c) -> ('a * 'b) -> 'c

Uncurrying (merges the two components of a tuple).

val fold : ('a -> 'b -> 'c) -> ('a * 'b) -> 'c

Synonym to merge.

since
0.3.3
val dup : 'a -> 'a * 'a

dup x = (x,x) (duplicate the value).

since
0.3.3
val dup_map : ('a -> 'b) -> 'a -> 'a * 'b

dup_map f x = (x, f x). Duplicates the value and applies the function to the second copy.

since
0.3.3
val equal : ('a -> 'a -> bool) -> ('b -> 'b -> bool) -> ('a * 'b) -> ('a * 'b) -> bool
val compare : ('a -> 'a -> int) -> ('b -> 'b -> int) -> ('a * 'b) -> ('a * 'b) -> int
val to_string : ?⁠sep:string -> ('a -> string) -> ('b -> string) -> ('a * 'b) -> string

Print tuple in a string

since
NEXT_RELEASE
type 'a printer = Format.formatter -> 'a -> unit
val pp : ?⁠sep:string -> 'a printer -> 'b printer -> ('a * 'b) printer

Print a pair given an optional separator and a method for printing each of its elements.

\ No newline at end of file diff --git a/dev/containers/CCParse.odoc b/dev/containers/CCParse.odoc deleted file mode 100644 index 154eba44dbd01b12546e91fc9d8ed02609357cee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10061 zcmd^FeT*FES-(5a+}&>4G^hosRnxq;w|BdH-rGB$&&40Hv&q$I9P;7BcB_;`$L#LA zx09QlS!QPMZjDJmlopjXolR?}!hj|wp-D)BW2vMnQfep=5E7PvA|;Aws}__$N*a}d z5LCeLdEWUt+pPkBKoORFJNv%x^ZmTf*R0cWn)ADAOSQ$1p8oBZMn*hda}Ow!aeVJ`RvRagVEXA$>+cC98;jP-y0dpua1n|usAaE z-rFZfMv5chTSTCZ1!4H&&Gj%i^dadE#4)qmv!q~hu2^xp4bwJ!$Mx!AJ$y7jGBWy< z;D1g}+9KlXz=3>Tt@?wW6uv8^I4JHAPFt9^FHVWO=#iJ__#*|dq%XSbtClp{VvB*c zB2>|i?X)Cz2H3l+yj2}kVp6oJ5GF+AkS-u^w>oau0G#hc))nPV)9;uz zv{Dd-2MVH`GEjD<-*>T9tyc>b5)oDu)@9t3m>o7w?JC+%_(;JF&y%hXN(ZeHn6B5g z=`fsMS-I1(ov!2dI%YFi{HLSm7tY@OrNN)MhhKj6H~-=*VYqk2=vt&_*ETFA$SsCv zHoahR@cbvQeeu}uu7BW$uOI)=%a2_XhI2=yyMf&eiS4u6w_khg@2;y}zg&LwJ11W` z7lyO&s%_{%z9U!02r;=*d9Z(6N|mTVh9y?E~2m;dAY-~RlorDsn3;m0oR({HW^;iDIy z)NU<1?y7WM#|^@I{bCpfQ%1dB51#m~q4w@s_#A*~Eqo#f&djPih$ z-wm|)TqGzQnub#11Km>7vDAJk+SlG5Z*EnUff}x1H#>p0gcG!P`uwxn!;8^%ciOA* z{=N%!;D1v4n075aXbbi5vlpMyJ~hYIKCEO2gMEY*kwPdqF(XNZAAFj0t)oE;C{^#*pN$rY z^OqKQaTSa!5dv+Csc8=?_WxA-u`H>b*#r_H{+lTuoCLYjalYSvN5b8~5Z_^c(-CB6 z)9xF@lea$~o({ud!C5B|;bYsdEI~I(5U4Vu*z6!1nSRL=EytF1Kup8#0GUZa=m>$Z zVO%JVND6ij68iHQRfoZD+|#DvNs5o=QHwh-7zJO?U)D!hJ|>}^tM)Rcb{LEh^zqb;=$#`3yMf^TECRyP45nHN@{tUd(~L!}|2pF#jOXywiZEV+na%4of|OJ<*06%|(tzMnFok7&Z; zlzbm4mX&zK7z(m08LL%U*V`G|#w|`<$;GakINp(Y6+t|@=t|D2K=GjjX~kO9M_0jH z#AYj2pg#H_KPpBaD^j2!4VLLabiFm`Wj}`xFO67hFpiysZE*y*9AOCc-x`V<_!bo} zzDpHMOmOUWrIlaI5PN=xXtar1Evhs;u0r5YRk4Bc2+@;e;@dx)+3}YuaFk;=Ht&A@;O0jER{W znoUq`@YmpARWy(#9orfRq`P_9?fC7tq<=eG=ZEiUe(bgL@g>p-ng;p@Pjf0omQQt6I!{Ds$_;zv#+ z+E=04o0MuRQ0+~JR5q_Ana<)!6swk*OH{k`R#cm4idz}=Bje^nhrO~R16P|4M zElQo*e z#LI9X%fSV~Ct7{aY*;eA4H`~Q8H(ZtQ9M(msT41&Frz;`L-cl0p#4cskJJDq*_KWx z&ZK=R#m0G7yFQEQkBXGhSOj_?5fWXUl&+IxHs8cp12!UA_Nu^jMPrc?eIaTav@a-? z#pQ$k&1sA(iChJr;-SV5S6U6TUW81zM@!%+>b%AP+!Gx%`Hcbl;VVfSp#5zs>$ixo zW@ls_|M4QQkcX={Om0`BrnQ=b(p6?w;ea5|yv()f7$Y?|R1H$7QiAyAI>J6A$J|%=)S1pgiN& zps`unSDv|PVoamjVhoB8`_spE_8y zUwykpmj!tw4=Nqsz$K}vF*J2&4HR3BM^_mPk&Ny@i2-!3v!T@B;_U-DE=XHQVTgWE zjw|zsNooZaPNE}aEYsd_tPOfnx|yPxb l={MeGG?_(!Q%3YVB>22%w3F6e*QtV6 zmsiJp43C_>#y?kv$yZ}rWvk`~K;S0DI#~|Klt+LF9fw7;;ZOhN6#uWLkHZY9m&$9> zU$vq_EGO=jZ7c4&ntj)WreS_t3Y=)bNmQ?;Kh8IGycIj?B}UVX(G;$R2GiDl*S-wV z1%;>|Bl>!Y_<{eBm*#d}4G+(Ct1u{`t3>#yUEp~8l~6SZKB-UKtdIX&YW<1ZD$Fjuw<3Knov_J2uN*%dfwmAxFPpJeaYf=X zD5blf@keySI=osbsT)nyRU&0_$I#%LhGm{qmzg3cPdjXo+bu9_h_f#1OLc@S+kF`t z6IC+2c7&G{sbEowrAR61-Wv0pS;V)e%s(@yFt$yLTEXG2^eb#ltJ}tHMYS@Um<`6n z3=&z1-qcaVP`B5T(R2-SOA07H2H_4OS3Efy|BWm^Jr-1@XeH=hN3W5H+^}At4~nr!{b_gVmg)Kz8^lW)hCw2?ekiF0;PQv+2mjwR&Xe>aEWQc3xA8rgT;VmuzIw2&XgJ|xD8fZUZa_J@rwc9S;t$7LO5I~pk(o#Ub2E$8U=32qHYOUws4?O z%YT^0oIDLfx$JLBfMcPH;ujMhYWI4owhV^!X4&;AZsd-jw;C1+KYu++U#V&1Zy%1r z%;cw2UppPrmUe^EGY6d8=%qZ>1M^3D;Dve}3s4rFoP3%Aa?!X`yRS&US)tRp#k-OQ zENaeCK=3S*YC@8l6v5i!)fnTK6vj`e>P>sF*fUI;_XoKn5d-LmOc(a0oUD}0qduja zjJ~PEkoa*7|B8WT7lpEc;=EFz1inpAXSeI=+%`Qu9qZ{E8IPQN9bZ)XnS28^E!9!{ zMu&BF4kH~CKlEa@?~2)0YyW-5QB+@r_rKcC`>We{|3<`n?%f&QbAnk_NhVjqmnIuC RH=hc^i*(WI+IQ>q{{;KYr6>RZ diff --git a/dev/containers/CCHashtbl/.jbuilder-keep b/dev/containers/CCParse/.dune-keep similarity index 100% rename from dev/containers/CCHashtbl/.jbuilder-keep rename to dev/containers/CCParse/.dune-keep diff --git a/dev/containers/CCParse/Infix/index.html b/dev/containers/CCParse/Infix/index.html index f0b62512..db211dad 100644 --- a/dev/containers/CCParse/Infix/index.html +++ b/dev/containers/CCParse/Infix/index.html @@ -1,2 +1,2 @@ -Infix (containers.CCParse.Infix)

Module CCParse.Infix

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Map.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind. p >>= f results in a new parser which behaves as p then, in case of success, applies f to the result.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

Applicative.

val (<*) : 'a t -> _ t -> 'a t

a <* b parses a into x, parses b and ignores its result, and returns x.

val (*>) : _ t -> 'a t -> 'a t

a *> b parses a, then parses b into x, and returns x. The results of a is ignored.

val (<|>) : 'a t -> 'a t -> 'a t

a <|> b tries to parse a, and if a fails without consuming any input, backtracks and tries to parse b, otherwise it fails as a. See try_ to ensure a does not consume anything (but it is best to avoid wrapping large parsers with try_).

val (<?>) : 'a t -> string -> 'a t

a <?> msg behaves like a, but if a fails without consuming any input, it fails with msg instead. Useful as the last choice in a series of <|>: a <|> b <|> c <?> "expected a|b|c".

\ No newline at end of file +Infix (containers.CCParse.Infix)

Module CCParse.Infix

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Map.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind. p >>= f results in a new parser which behaves as p then, in case of success, applies f to the result.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

Applicative.

val (<*) : 'a t -> _ t -> 'a t

a <* b parses a into x, parses b and ignores its result, and returns x.

val (*>) : _ t -> 'a t -> 'a t

a *> b parses a, then parses b into x, and returns x. The results of a is ignored.

val (<|>) : 'a t -> 'a t -> 'a t

a <|> b tries to parse a, and if a fails without consuming any input, backtracks and tries to parse b, otherwise it fails as a. See try_ to ensure a does not consume anything (but it is best to avoid wrapping large parsers with try_).

val (<?>) : 'a t -> string -> 'a t

a <?> msg behaves like a, but if a fails without consuming any input, it fails with msg instead. Useful as the last choice in a series of <|>: a <|> b <|> c <?> "expected a|b|c".

\ No newline at end of file diff --git a/dev/containers/CCParse/U/index.html b/dev/containers/CCParse/U/index.html index 02741176..e008dd42 100644 --- a/dev/containers/CCParse/U/index.html +++ b/dev/containers/CCParse/U/index.html @@ -1,2 +1,2 @@ -U (containers.CCParse.U)

Module CCParse.U

val list : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> 'a t -> 'a list t

list p parses a list of p, with the OCaml conventions for start token "", stop token "" and separator ";". Whitespace between items are skipped.

val int : int t

Parse an int.

val word : string t

Non empty string of alpha num, start with alpha.

val pair : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> 'a t -> 'b t -> ('a * 'b) t

Parse a pair using OCaml whitespace conventions. The default is "(a, b)".

val triple : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> 'a t -> 'b t -> 'c t -> ('a * 'b * 'c) t

Parse a triple using OCaml whitespace conventions. The default is "(a, b, c)".

\ No newline at end of file +U (containers.CCParse.U)

Module CCParse.U

val list : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> 'a t -> 'a list t

list p parses a list of p, with the OCaml conventions for start token "", stop token "" and separator ";". Whitespace between items are skipped.

val int : int t

Parse an int.

val word : string t

Non empty string of alpha num, start with alpha.

val pair : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> 'a t -> 'b t -> ('a * 'b) t

Parse a pair using OCaml whitespace conventions. The default is "(a, b)".

val triple : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> 'a t -> 'b t -> 'c t -> ('a * 'b * 'c) t

Parse a triple using OCaml whitespace conventions. The default is "(a, b, c)".

\ No newline at end of file diff --git a/dev/containers/CCParse/index.html b/dev/containers/CCParse/index.html index 69393570..91b5661e 100644 --- a/dev/containers/CCParse/index.html +++ b/dev/containers/CCParse/index.html @@ -1,5 +1,5 @@ -CCParse (containers.CCParse)

Module CCParse

Very Simple Parser Combinators

open CCParse;;
+CCParse (containers.CCParse)

Module CCParse

Very Simple Parser Combinators

open CCParse;;
 
 type tree = L of int | N of tree * tree;;
 
@@ -24,4 +24,4 @@ let l_printed =
 
 let l' = CCParse.parse_string_exn p l_printed;;
 
-assert (l=l');;
type 'a or_error = ('a, string) Result.result
type line_num = int
type col_num = int
type parse_branch
val string_of_branch : parse_branch -> string
exception ParseError of parse_branch * unit -> string

parsing branch * message.

Input

type position
type state
val state_of_string : string -> state

Combinators

type 'a t = state -> ok:('a -> unit) -> err:(exn -> unit) -> unit

Takes the input and two continuations:

  • ok to call with the result when it's done
  • err to call when the parser met an error
raises ParseError

in case of failure.

val return : 'a -> 'a t

Always succeeds, without consuming its input.

val pure : 'a -> 'a t

Synonym to return.

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Map.

val map : ('a -> 'b) -> 'a t -> 'b t
val map2 : ('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t
val map3 : ('a -> 'b -> 'c -> 'd) -> 'a t -> 'b t -> 'c t -> 'd t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind. p >>= f results in a new parser which behaves as p then, in case of success, applies f to the result.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

Applicative.

val (<*) : 'a t -> _ t -> 'a t

a <* b parses a into x, parses b and ignores its result, and returns x.

val (*>) : _ t -> 'a t -> 'a t

a *> b parses a, then parses b into x, and returns x. The results of a is ignored.

val fail : string -> 'a t

fail msg fails with the given message. It can trigger a backtrack.

val failf : ('a, unit, string, 'b t) Pervasives.format4 -> 'a

Format.sprintf version of fail.

val parsing : string -> 'a t -> 'a t

parsing s p behaves the same as p, with the information that we are parsing s, if p fails.

val eoi : unit t

Expect the end of input, fails otherwise.

val nop : unit t

Succeed with ().

val char : char -> char t

char c parses the character c and nothing else.

val char_if : (char -> bool) -> char t

char_if f parses a character c if f c = true.

val chars_if : (char -> bool) -> string t

chars_if f parses a string of chars that satisfy f.

val chars1_if : (char -> bool) -> string t

Like chars_if, but only non-empty strings.

val endline : char t

Parse '\n'.

val space : char t

Tab or space.

val white : char t

Tab or space or newline.

val skip_chars : (char -> bool) -> unit t

Skip 0 or more chars satisfying the predicate.

val skip_space : unit t

Skip ' ' and '\t'.

val skip_white : unit t

Skip ' ' and '\t' and '\n'.

val is_alpha : char -> bool

Is the char a letter?

val is_num : char -> bool

Is the char a digit?

val is_alpha_num : char -> bool

Is the char a letter or a digit?

val is_space : char -> bool

True on ' ' and '\t'.

val is_white : char -> bool

True on ' ' and '\t' and '\n'.

val (<|>) : 'a t -> 'a t -> 'a t

a <|> b tries to parse a, and if a fails without consuming any input, backtracks and tries to parse b, otherwise it fails as a. See try_ to ensure a does not consume anything (but it is best to avoid wrapping large parsers with try_).

val (<?>) : 'a t -> string -> 'a t

a <?> msg behaves like a, but if a fails without consuming any input, it fails with msg instead. Useful as the last choice in a series of <|>: a <|> b <|> c <?> "expected a|b|c".

val try_ : 'a t -> 'a t

try_ p tries to parse like p, but backtracks if p fails. Useful in combination with <|>.

val suspend : (unit -> 'a t) -> 'a t

suspend f is the same as f (), but evaluates f () only when needed.

val string : string -> string t

string s parses exactly the string s, and nothing else.

val many : 'a t -> 'a list t

many p parses a list of p, eagerly (as long as possible).

val many1 : 'a t -> 'a list t

Parse a non-empty list.

val skip : _ t -> unit t

skip p parses zero or more times p and ignores its result.

val sep : by:_ t -> 'a t -> 'a list t

sep ~by p parses a list of p separated by by.

val sep1 : by:_ t -> 'a t -> 'a list t

sep1 ~by p parses a non empty list of p, separated by by.

val fix : ('a t -> 'a t) -> 'a t

Fixpoint combinator.

val memo : 'a t -> 'a t

Memoize the parser. memo p will behave like p, but when called in a state (read: position in input) it has already processed, memo p returns a result directly. The implementation uses an underlying hashtable. This can be costly in memory, but improve the run time a lot if there is a lot of backtracking involving p.

This function is not thread-safe.

val fix_memo : ('a t -> 'a t) -> 'a t

Like fix, but the fixpoint is memoized.

val get_lnum : int t

Reflect the current line number.

val get_cnum : int t

Reflect the current column number.

val get_pos : (int * int) t

Reflect the current (line, column) numbers.

Parse

Those functions have a label ~p on the parser, since 0.14.

val parse : 'a t -> state -> 'a or_error

parse p st applies p on the input, and returns Ok x if p succeeds with x, or Error s otherwise.

val parse_exn : 'a t -> state -> 'a

Unsafe version of Parse.

raises ParseError

if it fails.

val parse_string : 'a t -> string -> 'a or_error

Specialization of Parse for string inputs.

val parse_string_exn : 'a t -> string -> 'a
raises ParseError

if it fails.

val parse_file : 'a t -> string -> 'a or_error

parse_file p file parses file with p by opening the file and reading it whole.

val parse_file_exn : 'a t -> string -> 'a
raises ParseError

if it fails.

Infix

module Infix : sig ... end

Utils

This is useful to parse OCaml-like values in a simple way.

module U : sig ... end
\ No newline at end of file +assert (l=l');;
type 'a or_error = ('a, string) Result.result
type line_num = int
type col_num = int
type parse_branch
val string_of_branch : parse_branch -> string
exception ParseError of parse_branch * unit -> string

parsing branch * message.

Input

type position
type state
val state_of_string : string -> state

Combinators

type 'a t = state -> ok:('a -> unit) -> err:(exn -> unit) -> unit

Takes the input and two continuations:

  • ok to call with the result when it's done
  • err to call when the parser met an error
raises ParseError

in case of failure.

val return : 'a -> 'a t

Always succeeds, without consuming its input.

val pure : 'a -> 'a t

Synonym to return.

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Map.

val map : ('a -> 'b) -> 'a t -> 'b t
val map2 : ('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t
val map3 : ('a -> 'b -> 'c -> 'd) -> 'a t -> 'b t -> 'c t -> 'd t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind. p >>= f results in a new parser which behaves as p then, in case of success, applies f to the result.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

Applicative.

val (<*) : 'a t -> _ t -> 'a t

a <* b parses a into x, parses b and ignores its result, and returns x.

val (*>) : _ t -> 'a t -> 'a t

a *> b parses a, then parses b into x, and returns x. The results of a is ignored.

val fail : string -> 'a t

fail msg fails with the given message. It can trigger a backtrack.

val failf : ('a, unit, string, 'b t) Pervasives.format4 -> 'a

Format.sprintf version of fail.

val parsing : string -> 'a t -> 'a t

parsing s p behaves the same as p, with the information that we are parsing s, if p fails.

val eoi : unit t

Expect the end of input, fails otherwise.

val nop : unit t

Succeed with ().

val char : char -> char t

char c parses the character c and nothing else.

val char_if : (char -> bool) -> char t

char_if f parses a character c if f c = true.

val chars_if : (char -> bool) -> string t

chars_if f parses a string of chars that satisfy f.

val chars1_if : (char -> bool) -> string t

Like chars_if, but only non-empty strings.

val endline : char t

Parse '\n'.

val space : char t

Tab or space.

val white : char t

Tab or space or newline.

val skip_chars : (char -> bool) -> unit t

Skip 0 or more chars satisfying the predicate.

val skip_space : unit t

Skip ' ' and '\t'.

val skip_white : unit t

Skip ' ' and '\t' and '\n'.

val is_alpha : char -> bool

Is the char a letter?

val is_num : char -> bool

Is the char a digit?

val is_alpha_num : char -> bool

Is the char a letter or a digit?

val is_space : char -> bool

True on ' ' and '\t'.

val is_white : char -> bool

True on ' ' and '\t' and '\n'.

val (<|>) : 'a t -> 'a t -> 'a t

a <|> b tries to parse a, and if a fails without consuming any input, backtracks and tries to parse b, otherwise it fails as a. See try_ to ensure a does not consume anything (but it is best to avoid wrapping large parsers with try_).

val (<?>) : 'a t -> string -> 'a t

a <?> msg behaves like a, but if a fails without consuming any input, it fails with msg instead. Useful as the last choice in a series of <|>: a <|> b <|> c <?> "expected a|b|c".

val try_ : 'a t -> 'a t

try_ p tries to parse like p, but backtracks if p fails. Useful in combination with <|>.

val suspend : (unit -> 'a t) -> 'a t

suspend f is the same as f (), but evaluates f () only when needed.

val string : string -> string t

string s parses exactly the string s, and nothing else.

val many : 'a t -> 'a list t

many p parses a list of p, eagerly (as long as possible).

val many1 : 'a t -> 'a list t

Parse a non-empty list.

val skip : _ t -> unit t

skip p parses zero or more times p and ignores its result.

val sep : by:_ t -> 'a t -> 'a list t

sep ~by p parses a list of p separated by by.

val sep1 : by:_ t -> 'a t -> 'a list t

sep1 ~by p parses a non empty list of p, separated by by.

val fix : ('a t -> 'a t) -> 'a t

Fixpoint combinator.

val memo : 'a t -> 'a t

Memoize the parser. memo p will behave like p, but when called in a state (read: position in input) it has already processed, memo p returns a result directly. The implementation uses an underlying hashtable. This can be costly in memory, but improve the run time a lot if there is a lot of backtracking involving p.

This function is not thread-safe.

val fix_memo : ('a t -> 'a t) -> 'a t

Like fix, but the fixpoint is memoized.

val get_lnum : int t

Reflect the current line number.

val get_cnum : int t

Reflect the current column number.

val get_pos : (int * int) t

Reflect the current (line, column) numbers.

Parse

Those functions have a label ~p on the parser, since 0.14.

val parse : 'a t -> state -> 'a or_error

parse p st applies p on the input, and returns Ok x if p succeeds with x, or Error s otherwise.

val parse_exn : 'a t -> state -> 'a

Unsafe version of Parse.

raises ParseError

if it fails.

val parse_string : 'a t -> string -> 'a or_error

Specialization of Parse for string inputs.

val parse_string_exn : 'a t -> string -> 'a
raises ParseError

if it fails.

val parse_file : 'a t -> string -> 'a or_error

parse_file p file parses file with p by opening the file and reading it whole.

val parse_file_exn : 'a t -> string -> 'a
raises ParseError

if it fails.

Infix

module Infix : sig ... end

Utils

This is useful to parse OCaml-like values in a simple way.

module U : sig ... end
\ No newline at end of file diff --git a/dev/containers/CCHeap/.jbuilder-keep b/dev/containers/CCPersistentArray/.dune-keep similarity index 100% rename from dev/containers/CCHeap/.jbuilder-keep rename to dev/containers/CCPersistentArray/.dune-keep diff --git a/dev/containers/CCPersistentArray/index.html b/dev/containers/CCPersistentArray/index.html new file mode 100644 index 00000000..a1657096 --- /dev/null +++ b/dev/containers/CCPersistentArray/index.html @@ -0,0 +1,2 @@ + +CCPersistentArray (containers.CCPersistentArray)

Module CCPersistentArray

Persistent Arrays

From the paper by Jean-Christophe Filliâtre, "A persistent Union-Find data structure", see the ps version

since
0.10
type 'a t

The type of persistent arrays

val make : int -> 'a -> 'a t

make n x returns a persistent array of length n, with x. All the elements of this new array are initially physically equal to x (in the sense of the == predicate). Consequently, if x is mutable, it is shared among all elements of the array, and modifying x through one of the array entries will modify all other entries at the same time.

raises Invalid_argument

if n < 0 or n > Sys.max_array_length. If the value of x is a floating-point number, then the maximum size is only Sys.max_array_length / 2.

val init : int -> (int -> 'a) -> 'a t

init n f returns a persistent array of length n, with element i initialized to the result of f i.

raises Invalid_argument

if n < 0 or n > Sys.max_array_length. If the value of x is a floating-point number, then the maximum size is only Sys.max_array_length / 2.

val get : 'a t -> int -> 'a

get a i returns the element with index i from the array a.

raises Invalid_argument

"index out of bounds" if n is outside the range 0 to Array.length a - 1.

val set : 'a t -> int -> 'a -> 'a t

set a i v sets the element index i from the array a to v.

raises Invalid_argument

"index out of bounds" if n is outside the range 0 to Array.length a - 1.

val length : 'a t -> int

Return the length of the persistent array.

val copy : 'a t -> 'a t

copy a returns a fresh copy of a. Both copies are independent.

val map : ('a -> 'b) -> 'a t -> 'b t
val mapi : (int -> 'a -> 'b) -> 'a t -> 'b t

Apply the given function to all elements of the array, and return a persistent array initialized by the results of f. In the case of mapi, the function is also given the index of the element. It is equivalent to fun f t -> init (fun i -> f (get t i)).

val iter : ('a -> unit) -> 'a t -> unit

iter f t applies function f to all elements of the persistent array, in order from element 0 to element length t - 1.

val iteri : (int -> 'a -> unit) -> 'a t -> unit

iter f t applies function f to all elements of the persistent array, in order from element 0 to element length t - 1.

val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a
val fold_right : ('a -> 'b -> 'b) -> 'a t -> 'b -> 'b

Fold on the elements of the array.

val append : 'a t -> 'a t -> 'a t

Append the two arrays.

since
0.13
val flatten : 'a t t -> 'a t

Concatenates all the sub-arrays.

since
0.13
val flat_map : ('a -> 'b t) -> 'a t -> 'b t

Flat map (map + concatenation).

since
0.13
val to_array : 'a t -> 'a array

to_array t returns a mutable copy of t.

val of_array : 'a array -> 'a t

of_array a returns an immutable copy of a.

val to_list : 'a t -> 'a list

to_list t returns the list of elements in t.

val of_list : 'a list -> 'a t

of_list l returns a fresh persistent array containing the elements of l.

val of_rev_list : 'a list -> 'a t

of_rev_list l is the same as of_list (List.rev l) but more efficient.

since
0.13

Conversions

type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
val to_seq : 'a t -> 'a sequence
val of_seq : 'a sequence -> 'a t
val of_gen : 'a gen -> 'a t
since
0.13
val to_gen : 'a t -> 'a gen
since
0.13

IO

type 'a printer = Format.formatter -> 'a -> unit
val pp : 'a printer -> 'a t printer
since
0.13
\ No newline at end of file diff --git a/dev/containers/CCIO/.jbuilder-keep b/dev/containers/CCPersistentHashtbl/.dune-keep similarity index 100% rename from dev/containers/CCIO/.jbuilder-keep rename to dev/containers/CCPersistentHashtbl/.dune-keep diff --git a/dev/containers/CCPersistentHashtbl/Make/argument-1-H/index.html b/dev/containers/CCPersistentHashtbl/Make/argument-1-H/index.html new file mode 100644 index 00000000..1bc0d2e7 --- /dev/null +++ b/dev/containers/CCPersistentHashtbl/Make/argument-1-H/index.html @@ -0,0 +1,2 @@ + +1-H (containers.CCPersistentHashtbl.Make.1-H)

Parameter Make.1-H

type t
val equal : t -> t -> bool
val hash : t -> int
\ No newline at end of file diff --git a/dev/containers/CCPersistentHashtbl/Make/index.html b/dev/containers/CCPersistentHashtbl/Make/index.html new file mode 100644 index 00000000..b52415a6 --- /dev/null +++ b/dev/containers/CCPersistentHashtbl/Make/index.html @@ -0,0 +1,2 @@ + +Make (containers.CCPersistentHashtbl.Make)

Module CCPersistentHashtbl.Make

Parameters

Signature

type key = H.t
type 'a t
val empty : unit -> 'a t

Empty table. The table will be allocated at the first binding.

val create : int -> 'a t

Create a new hashtable, with the given initial capacity.

val is_empty : 'a t -> bool

Is the table empty?

val find : 'a t -> key -> 'a

Find the value for this key, or fails.

raises Not_found

if the key is not present in the table.

val get_exn : key -> 'a t -> 'a

Synonym to find with flipped arguments.

val get : key -> 'a t -> 'a option

Safe version of get_exn.

val mem : 'a t -> key -> bool

Is the key bound?

val length : _ t -> int

Number of bindings.

val add : 'a t -> key -> 'a -> 'a t

Add the binding to the table, returning a new table. The old binding for this key, if it exists, is shadowed and will be restored upon remove tbl k.

since
0.14
val replace : 'a t -> key -> 'a -> 'a t

Add the binding to the table, returning a new table. This erases the current binding for key, if any.

val update : 'a t -> key -> ('a option -> 'a option) -> 'a t

update tbl key f calls f None if key doesn't belong in tbl, f (Some v) if key -> v otherwise; If f returns None then key is removed, else it returns Some v' and key -> v' is added.

val remove : 'a t -> key -> 'a t

Remove the key.

val copy : 'a t -> 'a t

Fresh copy of the table; the underlying structure is not shared anymore, so using both tables alternatively will be efficient.

val merge : f:(key -> [ `Left of 'a | `Right of 'b | `Both of 'a * 'b ] -> 'c option) -> 'a t -> 'b t -> 'c t

Merge two tables together into a new table. The function's argument correspond to values associated with the key (if present); if the function returns None the key will not appear in the result.

val iter : 'a t -> (key -> 'a -> unit) -> unit

Iterate over bindings.

val fold : ('b -> key -> 'a -> 'b) -> 'b -> 'a t -> 'b

Fold over bindings.

val map : (key -> 'a -> 'b) -> 'a t -> 'b t

Map all values.

val filter : (key -> 'a -> bool) -> 'a t -> 'a t
val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
val for_all : (key -> 'a -> bool) -> 'a t -> bool
val exists : (key -> 'a -> bool) -> 'a t -> bool

Conversions

val of_seq : (key * 'a) sequence -> 'a t

Add (replace) bindings from the sequence to the table.

val of_list : (key * 'a) list -> 'a t
val add_seq : 'a t -> (key * 'a) sequence -> 'a t
val add_list : 'a t -> (key * 'a) list -> 'a t
val to_seq : 'a t -> (key * 'a) sequence

Iter of the bindings of the table.

val to_list : 'a t -> (key * 'a) list

Misc

val equal : 'a equal -> 'a t equal
val pp : ?⁠sep:string -> ?⁠arrow:string -> key printer -> 'a printer -> 'a t printer
val stats : _ t -> Hashtbl.statistics

Statistics on the internal table.

since
0.14
\ No newline at end of file diff --git a/dev/containers/CCPersistentHashtbl/index.html b/dev/containers/CCPersistentHashtbl/index.html new file mode 100644 index 00000000..1988ed2a --- /dev/null +++ b/dev/containers/CCPersistentHashtbl/index.html @@ -0,0 +1,2 @@ + +CCPersistentHashtbl (containers.CCPersistentHashtbl)

Module CCPersistentHashtbl

Persistent hash-table on top of OCaml's hashtables

Almost as efficient as the regular Hashtbl type, but with a persistent interface (rewinding changes to get back in the past history). This is mostly useful for backtracking-like uses, or forward uses (never using old values).

This module is not thread-safe.

type 'a sequence = ('a -> unit) -> unit
type 'a printer = Format.formatter -> 'a -> unit
type 'a equal = 'a -> 'a -> bool
module type HashedType = sig ... end

Signature of such a hashtable

module type S = sig ... end

Implementation

module Make : functor (H : HashedType) -> S with type key = H.t
\ No newline at end of file diff --git a/dev/containers/CCPersistentHashtbl/module-type-HashedType/index.html b/dev/containers/CCPersistentHashtbl/module-type-HashedType/index.html new file mode 100644 index 00000000..6119840a --- /dev/null +++ b/dev/containers/CCPersistentHashtbl/module-type-HashedType/index.html @@ -0,0 +1,2 @@ + +HashedType (containers.CCPersistentHashtbl.HashedType)

Module type CCPersistentHashtbl.HashedType

type t
val equal : t -> t -> bool
val hash : t -> int
\ No newline at end of file diff --git a/dev/containers/CCPersistentHashtbl/module-type-S/index.html b/dev/containers/CCPersistentHashtbl/module-type-S/index.html new file mode 100644 index 00000000..e2f97b9c --- /dev/null +++ b/dev/containers/CCPersistentHashtbl/module-type-S/index.html @@ -0,0 +1,2 @@ + +S (containers.CCPersistentHashtbl.S)

Module type CCPersistentHashtbl.S

type key
type 'a t
val empty : unit -> 'a t

Empty table. The table will be allocated at the first binding.

val create : int -> 'a t

Create a new hashtable, with the given initial capacity.

val is_empty : 'a t -> bool

Is the table empty?

val find : 'a t -> key -> 'a

Find the value for this key, or fails.

raises Not_found

if the key is not present in the table.

val get_exn : key -> 'a t -> 'a

Synonym to find with flipped arguments.

val get : key -> 'a t -> 'a option

Safe version of get_exn.

val mem : 'a t -> key -> bool

Is the key bound?

val length : _ t -> int

Number of bindings.

val add : 'a t -> key -> 'a -> 'a t

Add the binding to the table, returning a new table. The old binding for this key, if it exists, is shadowed and will be restored upon remove tbl k.

since
0.14
val replace : 'a t -> key -> 'a -> 'a t

Add the binding to the table, returning a new table. This erases the current binding for key, if any.

val update : 'a t -> key -> ('a option -> 'a option) -> 'a t

update tbl key f calls f None if key doesn't belong in tbl, f (Some v) if key -> v otherwise; If f returns None then key is removed, else it returns Some v' and key -> v' is added.

val remove : 'a t -> key -> 'a t

Remove the key.

val copy : 'a t -> 'a t

Fresh copy of the table; the underlying structure is not shared anymore, so using both tables alternatively will be efficient.

val merge : f:(key -> [ `Left of 'a | `Right of 'b | `Both of 'a * 'b ] -> 'c option) -> 'a t -> 'b t -> 'c t

Merge two tables together into a new table. The function's argument correspond to values associated with the key (if present); if the function returns None the key will not appear in the result.

val iter : 'a t -> (key -> 'a -> unit) -> unit

Iterate over bindings.

val fold : ('b -> key -> 'a -> 'b) -> 'b -> 'a t -> 'b

Fold over bindings.

val map : (key -> 'a -> 'b) -> 'a t -> 'b t

Map all values.

val filter : (key -> 'a -> bool) -> 'a t -> 'a t
val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
val for_all : (key -> 'a -> bool) -> 'a t -> bool
val exists : (key -> 'a -> bool) -> 'a t -> bool

Conversions

val of_seq : (key * 'a) sequence -> 'a t

Add (replace) bindings from the sequence to the table.

val of_list : (key * 'a) list -> 'a t
val add_seq : 'a t -> (key * 'a) sequence -> 'a t
val add_list : 'a t -> (key * 'a) list -> 'a t
val to_seq : 'a t -> (key * 'a) sequence

Iter of the bindings of the table.

val to_list : 'a t -> (key * 'a) list

Misc

val equal : 'a equal -> 'a t equal
val pp : ?⁠sep:string -> ?⁠arrow:string -> key printer -> 'a printer -> 'a t printer
val stats : _ t -> Hashtbl.statistics

Statistics on the internal table.

since
0.14
\ No newline at end of file diff --git a/dev/containers/CCInt/.jbuilder-keep b/dev/containers/CCPool/.dune-keep similarity index 100% rename from dev/containers/CCInt/.jbuilder-keep rename to dev/containers/CCPool/.dune-keep diff --git a/dev/containers/CCPool/Make/Fut/Infix/index.html b/dev/containers/CCPool/Make/Fut/Infix/index.html new file mode 100644 index 00000000..bf8db381 --- /dev/null +++ b/dev/containers/CCPool/Make/Fut/Infix/index.html @@ -0,0 +1,2 @@ + +Infix (containers.CCPool.Make.Fut.Infix)

Module Fut.Infix

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
val (>>) : 'a t -> (unit -> 'b t) -> 'b t
val (>|=) : 'a t -> ('a -> 'b) -> 'b t
val (<*>) : ('a -> 'b) t -> 'a t -> 'b t
\ No newline at end of file diff --git a/dev/containers/CCPool/Make/Fut/index.html b/dev/containers/CCPool/Make/Fut/index.html new file mode 100644 index 00000000..b3376d0b --- /dev/null +++ b/dev/containers/CCPool/Make/Fut/index.html @@ -0,0 +1,2 @@ + +Fut (containers.CCPool.Make.Fut)

Module Make.Fut

Futures

The futures are registration points for callbacks, storing a state, that are executed in the pool using run.

type 'a t

A future value of type 'a

type 'a future = 'a t

Constructors

val return : 'a -> 'a t

Future that is already computed.

val fail : exn -> 'a t

Future that fails immediately.

val make : (unit -> 'a) -> 'a t

Create a future, representing a value that will be computed by the function. If the function raises, the future will fail.

val make1 : ('a -> 'b) -> 'a -> 'b t
val make2 : ('a -> 'b -> 'c) -> 'a -> 'b -> 'c t

Basics

val get : 'a t -> 'a

Blocking get: wait for the future to be evaluated, and get the value, or the exception that failed the future is returned. Raise e if the future failed with e.

val state : 'a t -> 'a state

State of the future.

val is_done : 'a t -> bool

Is the future evaluated (success/failure)?

Combinators

val on_success : 'a t -> ('a -> unit) -> unit

Attach a handler to be called upon success. The handler should not call functions on the future. Might be evaluated now if the future is already done.

val on_failure : _ t -> (exn -> unit) -> unit

Attach a handler to be called upon failure. The handler should not call any function on the future. Might be evaluated now if the future is already done.

val on_finish : 'a t -> ('a state -> unit) -> unit

Attach a handler to be called when the future is evaluated. The handler should not call functions on the future. Might be evaluated now if the future is already done.

val flat_map : ('a -> 'b t) -> 'a t -> 'b t

Monadic combination of futures.

val and_then : 'a t -> (unit -> 'b t) -> 'b t

Wait for the first future to succeed, then launch the second.

val sequence_a : 'a t array -> 'a array t

Future that waits for all previous futures to terminate. If any future in the array fails, sequence_a l fails too.

val map_a : ('a -> 'b t) -> 'a array -> 'b array t

map_a f a maps f on every element of a, and will return the array of every result if all calls succeed, or an error otherwise.

val sequence_l : 'a t list -> 'a list t

Future that waits for all previous futures to terminate. If any future in the list fails, sequence_l l fails too.

val map_l : ('a -> 'b t) -> 'a list -> 'b list t

map_l f l maps f on every element of l, and will return the list of every result if all calls succeed, or an error otherwise.

val choose_a : 'a t array -> 'a t

Choose among those futures (the first to terminate). Behaves like the first future that terminates, by failing if the future fails.

val choose_l : 'a t list -> 'a t

Choose among those futures (the first to terminate). Behaves like the first future that terminates, by failing if the future fails.

val map : ('a -> 'b) -> 'a t -> 'b t

Map the value inside the future. The function doesn't run in its own task; if it can take time, use flat_map or map_async.

val map_async : ('a -> 'b) -> 'a t -> 'b t

Map the value inside the future, to be computed in a separated job.

val app : ('a -> 'b) t -> 'a t -> 'b t

app f x applies the result of f to the result of x.

val app_async : ('a -> 'b) t -> 'a t -> 'b t

app_async f x applies the result of f to the result of x, in a separated job scheduled in the pool.

val sleep : float -> unit t

Future that returns with success in the given amount of seconds. Blocks the thread! If you need to wait on many events, consider using CCTimer.

module Infix : sig ... end
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
val (>>) : 'a t -> (unit -> 'b t) -> 'b t
val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Alias to map.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

Alias to app.

\ No newline at end of file diff --git a/dev/containers/CCPool/Make/argument-1-P/index.html b/dev/containers/CCPool/Make/argument-1-P/index.html new file mode 100644 index 00000000..4273e192 --- /dev/null +++ b/dev/containers/CCPool/Make/argument-1-P/index.html @@ -0,0 +1,2 @@ + +1-P (containers.CCPool.Make.1-P)

Parameter Make.1-P

val max_size : int

Maximum number of threads in the pool.

\ No newline at end of file diff --git a/dev/containers/CCPool/Make/index.html b/dev/containers/CCPool/Make/index.html new file mode 100644 index 00000000..43532261 --- /dev/null +++ b/dev/containers/CCPool/Make/index.html @@ -0,0 +1,2 @@ + +Make (containers.CCPool.Make)

Module CCPool.Make

Create a new Pool

Parameters

Signature

val run : (unit -> _) -> unit

run f schedules f for being executed in the thread pool.

val run1 : ('a -> _) -> 'a -> unit

run1 f x is similar to run (fun () -> f x).

val run2 : ('a -> 'b -> _) -> 'a -> 'b -> unit
val run3 : ('a -> 'b -> 'c -> _) -> 'a -> 'b -> 'c -> unit
val set_exn_handler : (exn -> unit) -> unit
val active : unit -> bool

active () is true as long as stop() has not been called yet.

val stop : unit -> unit

After calling stop (), most functions will raise Stopped. This has the effect of preventing new tasks from being executed.

module Fut : sig ... end
\ No newline at end of file diff --git a/dev/containers/CCPool/index.html b/dev/containers/CCPool/index.html new file mode 100644 index 00000000..d9878636 --- /dev/null +++ b/dev/containers/CCPool/index.html @@ -0,0 +1,2 @@ + +CCPool (containers.CCPool)

Module CCPool

Thread Pool, and Futures

Renamed and heavily updated from CCFuture.

since
0.16
type +'a state =
| Done of 'a
| Waiting
| Failed of exn
module type PARAM = sig ... end
exception Stopped
module Make : functor (P : PARAM) -> sig ... end
\ No newline at end of file diff --git a/dev/containers/CCPool/module-type-PARAM/index.html b/dev/containers/CCPool/module-type-PARAM/index.html new file mode 100644 index 00000000..e42cf11d --- /dev/null +++ b/dev/containers/CCPool/module-type-PARAM/index.html @@ -0,0 +1,2 @@ + +PARAM (containers.CCPool.PARAM)

Module type CCPool.PARAM

val max_size : int

Maximum number of threads in the pool.

\ No newline at end of file diff --git a/dev/containers/CCInt32/.jbuilder-keep b/dev/containers/CCRAL/.dune-keep similarity index 100% rename from dev/containers/CCInt32/.jbuilder-keep rename to dev/containers/CCRAL/.dune-keep diff --git a/dev/containers/CCRAL/Infix/index.html b/dev/containers/CCRAL/Infix/index.html new file mode 100644 index 00000000..758a315f --- /dev/null +++ b/dev/containers/CCRAL/Infix/index.html @@ -0,0 +1,2 @@ + +Infix (containers.CCRAL.Infix)

Module CCRAL.Infix

val (@+) : 'a -> 'a t -> 'a t

Cons (alias to cons).

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Alias to flat_map.

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Alias to map.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

Alias to app.

val (--) : int -> int -> int t

Alias to range.

val (--^) : int -> int -> int t

a --^ b is the integer range from a to b, where b is excluded.

since
0.17
\ No newline at end of file diff --git a/dev/containers/CCRAL/index.html b/dev/containers/CCRAL/index.html new file mode 100644 index 00000000..5890d9d2 --- /dev/null +++ b/dev/containers/CCRAL/index.html @@ -0,0 +1,2 @@ + +CCRAL (containers.CCRAL)

Module CCRAL

Random-Access Lists

This is an OCaml implementation of Okasaki's paper "Purely Functional Random Access Lists". It defines a list-like data structure with O(1) cons/tail operations, and O(log(n)) lookup/modification operations.

This module used to be part of containers.misc

status: stable

since
0.13
type +'a t

List containing elements of type 'a

val empty : 'a t

Empty list.

val is_empty : _ t -> bool

Check whether the list is empty.

val cons : 'a -> 'a t -> 'a t

Add an element at the front of the list.

val return : 'a -> 'a t

Singleton.

val map : f:('a -> 'b) -> 'a t -> 'b t

Map on elements.

val mapi : f:(int -> 'a -> 'b) -> 'a t -> 'b t

Map with index.

val hd : 'a t -> 'a

First element of the list, or

raises Invalid_argument

if the list is empty.

val tl : 'a t -> 'a t

Remove the first element from the list, or

raises Invalid_argument

if the list is empty.

val front : 'a t -> ('a * 'a t) option

Remove and return the first element of the list.

val front_exn : 'a t -> 'a * 'a t

Unsafe version of front.

raises Invalid_argument

if the list is empty.

val length : 'a t -> int

Number of elements. Complexity O(ln n) where n=number of elements.

val get : 'a t -> int -> 'a option

get l i accesses the i-th element of the list. O(log(n)).

val get_exn : 'a t -> int -> 'a

Unsafe version of get.

raises Invalid_argument

if the list has less than i+1 elements.

val set : 'a t -> int -> 'a -> 'a t

set l i v sets the i-th element of the list to v. O(log(n)).

raises Invalid_argument

if the list has less than i+1 elements.

val remove : 'a t -> int -> 'a t

remove l i removes the i-th element of v.

raises Invalid_argument

if the list has less than i+1 elements.

val append : 'a t -> 'a t -> 'a t
val filter : f:('a -> bool) -> 'a t -> 'a t
val filter_map : f:('a -> 'b option) -> 'a t -> 'b t
val flat_map : ('a -> 'b t) -> 'a t -> 'b t
val flatten : 'a t t -> 'a t
val app : ('a -> 'b) t -> 'a t -> 'b t
val take : int -> 'a t -> 'a t
val take_while : f:('a -> bool) -> 'a t -> 'a t
val drop : int -> 'a t -> 'a t
val drop_while : f:('a -> bool) -> 'a t -> 'a t
val take_drop : int -> 'a t -> 'a t * 'a t

take_drop n l splits l into a, b such that length a = n if length l >= n, and such that append a b = l.

val iter : f:('a -> unit) -> 'a t -> unit

Iterate on the list's elements.

val iteri : f:(int -> 'a -> unit) -> 'a t -> unit
val fold : f:('b -> 'a -> 'b) -> x:'b -> 'a t -> 'b

Fold on the list's elements.

val fold_rev : f:('b -> 'a -> 'b) -> x:'b -> 'a t -> 'b

Fold on the list's elements, in reverse order (starting from the tail).

val rev_map : f:('a -> 'b) -> 'a t -> 'b t

rev_map f l is the same as map f (rev l).

val rev : 'a t -> 'a t

Reverse the list.

val equal : eq:('a -> 'a -> bool) -> 'a t -> 'a t -> bool
val compare : cmp:('a -> 'a -> int) -> 'a t -> 'a t -> int

Lexicographic comparison.

Utils

val make : int -> 'a -> 'a t
val repeat : int -> 'a t -> 'a t

repeat n l is append l (append l ... l) n times.

val range : int -> int -> int t

range i j is i; i+1; ... ; j or j; j-1; ...; i.

Conversions

type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
val add_list : 'a t -> 'a list -> 'a t
val of_list : 'a list -> 'a t

Convert a list to a RAL. Caution: non tail-rec.

val to_list : 'a t -> 'a list
val of_list_map : f:('a -> 'b) -> 'a list -> 'b t

Combination of of_list and map.

val of_array : 'a array -> 'a t
val add_array : 'a t -> 'a array -> 'a t
val to_array : 'a t -> 'a array

More efficient than on usual lists.

val add_seq : 'a t -> 'a sequence -> 'a t
val of_seq : 'a sequence -> 'a t
val to_seq : 'a t -> 'a sequence
val add_gen : 'a t -> 'a gen -> 'a t
val of_gen : 'a gen -> 'a t
val to_gen : 'a t -> 'a gen

Infix

module Infix : sig ... end
include module type of Infix
val (@+) : 'a -> 'a t -> 'a t

Cons (alias to cons).

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Alias to flat_map.

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Alias to map.

val (<*>) : ('a -> 'b) t -> 'a t -> 'b t

Alias to app.

val (--) : int -> int -> int t

Alias to range.

val (--^) : int -> int -> int t

a --^ b is the integer range from a to b, where b is excluded.

since
0.17

IO

type 'a printer = Format.formatter -> 'a -> unit
val pp : ?⁠sep:string -> 'a printer -> 'a t printer
\ No newline at end of file diff --git a/dev/containers/CCRandom.odoc b/dev/containers/CCRandom.odoc deleted file mode 100644 index 8dfbe0f7e7e41170d66b47bf6970b56b7b47e6b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6138 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 diff --git a/dev/containers/CCInt64/.jbuilder-keep b/dev/containers/CCRandom/.dune-keep similarity index 100% rename from dev/containers/CCInt64/.jbuilder-keep rename to dev/containers/CCRandom/.dune-keep diff --git a/dev/containers/CCRandom/index.html b/dev/containers/CCRandom/index.html index 5799fc3c..4b2fdeff 100644 --- a/dev/containers/CCRandom/index.html +++ b/dev/containers/CCRandom/index.html @@ -1,7 +1,7 @@ -CCRandom (containers.CCRandom)

Module CCRandom

Random Generators

include module type of sig ... end
val init : int -> unit
val full_init : int array -> unit
val self_init : unit -> unit
val bits : unit -> int
val int : int -> int
val int32 : Int32.t -> Int32.t
val nativeint : Nativeint.t -> Nativeint.t
val int64 : Int64.t -> Int64.t
val float : float -> float
val bool : unit -> bool
module State = Random.State
val get_state : unit -> State.t
val set_state : State.t -> unit
type state = Random.State.t
type 'a t = state -> 'a

Random generator for values of type 'a.

type 'a random_gen = 'a t
val return : 'a -> 'a t

return x is the generator that always returns x. Example: let random_int = return 4 (* fair dice roll *).

val flat_map : ('a -> 'b t) -> 'a t -> 'b t

flat_map f g st is f (g st) st.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

val map : ('a -> 'b) -> 'a t -> 'b t

map f g st is f (g st).

val (>|=) : 'a t -> ('a -> 'b) -> 'b t
val delay : (unit -> 'a t) -> 'a t

Delay evaluation. Useful for side-effectful generators that need some code to run for every call. Example:

let gensym = let r = ref 0 in fun () -> incr r; !r ;;
+CCRandom (containers.CCRandom)

Module CCRandom

Random Generators

include module type of sig ... end
val init : int -> unit
val full_init : int array -> unit
val self_init : unit -> unit
val bits : unit -> int
val int : int -> int
val int32 : Int32.t -> Int32.t
val nativeint : Nativeint.t -> Nativeint.t
val int64 : Int64.t -> Int64.t
val float : float -> float
val bool : unit -> bool
module State = Random.State
val get_state : unit -> State.t
val set_state : State.t -> unit
type state = Random.State.t
type 'a t = state -> 'a

Random generator for values of type 'a.

type 'a random_gen = 'a t
val return : 'a -> 'a t

return x is the generator that always returns x. Example: let random_int = return 4 (* fair dice roll *).

val flat_map : ('a -> 'b t) -> 'a t -> 'b t

flat_map f g st is f (g st) st.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

val map : ('a -> 'b) -> 'a t -> 'b t

map f g st is f (g st).

val (>|=) : 'a t -> ('a -> 'b) -> 'b t
val delay : (unit -> 'a t) -> 'a t

Delay evaluation. Useful for side-effectful generators that need some code to run for every call. Example:

let gensym = let r = ref 0 in fun () -> incr r; !r ;;
 
 delay (fun () ->
   let name = gensym() in
   small_int >>= fun i -> return (name,i)
-)
since
0.4
val choose : 'a t list -> 'a option t

Choose a generator within the list.

val choose_exn : 'a t list -> 'a t

Like choose but without option.

raises Invalid_argument

if the list is empty.

val choose_array : 'a t array -> 'a option t

Choose a generator within the array.

val choose_return : 'a list -> 'a t

Choose among the list.

raises Invalid_argument

if the list is empty.

val replicate : int -> 'a t -> 'a list t

replicate n g makes a list of n elements which are all generated randomly using g.

val sample_without_replacement : compare:('a -> 'a -> int) -> int -> 'a t -> 'a list t

sample_without_replacement n g makes a list of n elements which are all generated randomly using g with the added constraint that none of the generated random values are equal.

deprecated

use sample_without_duplicates instead

raises Invalid_argument

if n <= 0.

since
0.15
val sample_without_duplicates : cmp:('a -> 'a -> int) -> int -> 'a t -> 'a list t

sample_without_replacement n g makes a list of n elements which are all generated randomly using g with the added constraint that none of the generated random values are equal.

raises Invalid_argument

if n <= 0.

since
2.4
val list_seq : 'a t list -> 'a list t

Build random lists from lists of random generators.

since
0.4
exception Pick_from_empty
since
0.16
val pick_list : 'a list -> 'a t

Pick an element at random from the list.

raises Pick_from_empty

if the list is empty.

since
0.16
val pick_array : 'a array -> 'a t

Pick an element at random from the array.

raises Pick_from_empty

if the array is empty.

since
0.16
val small_int : int t

A small int (100).

val int : int -> int t

Random int within the given range.

val int_range : int -> int -> int t

Inclusive range.

val small_float : float t

A reasonably small float (100.0).

since
0.6.1
val float : float -> float t

Random float within the given range.

since
0.6.1
val float_range : float -> float -> float t

Inclusive range. float_range a b assumes a < b.

since
0.6.1
val split : int -> (int * int) option t

Split a positive value n into n1,n2 where n = n1 + n2.

returns

None if the value is too small.

val split_list : int -> len:int -> int list option t

Split a value n into a list of values whose sum is n and whose length is length. The list is never empty and does not contain 0.

raises Invalid_argument

if len <= 1.

returns

None if the value is too small.

val retry : ?⁠max:int -> 'a option t -> 'a option t

retry g calls g until it returns some value, or until the maximum number of retries was reached. If g fails, then it counts for one iteration, and the generator retries.

parameter max:

maximum number of retries. Default 10.

val try_successively : 'a option t list -> 'a option t

try_successively l tries each generator of l, one after the other. If some generator succeeds its result is returned, else the next generator is tried.

val (<?>) : 'a option t -> 'a option t -> 'a option t

a <?> b is a choice operator. It first tries a, and returns its result if successful. If a fails, then b is returned.

val fix : ?⁠sub1:('a t -> 'a t) list -> ?⁠sub2:('a t -> 'a t -> 'a t) list -> ?⁠subn:(int t * ('a list t -> 'a t)) list -> base:'a t -> int t -> 'a t

Recursion combinators, for building recursive values. The integer generator is used to provide fuel. The sub_ generators should use their arguments only once!

parameter sub1

cases that recurse on one value.

parameter sub2

cases that use the recursive gen twice.

parameter subn

cases that use a list of recursive cases.

Applicative
val pure : 'a -> 'a t
val (<*>) : ('a -> 'b) t -> 'a t -> 'b t
Run a generator
val run : ?⁠st:state -> 'a t -> 'a

Using a random state (possibly the one in argument) run a generator.

\ No newline at end of file +)
since
0.4
val choose : 'a t list -> 'a option t

Choose a generator within the list.

val choose_exn : 'a t list -> 'a t

Like choose but without option.

raises Invalid_argument

if the list is empty.

val choose_array : 'a t array -> 'a option t

Choose a generator within the array.

val choose_return : 'a list -> 'a t

Choose among the list.

raises Invalid_argument

if the list is empty.

val replicate : int -> 'a t -> 'a list t

replicate n g makes a list of n elements which are all generated randomly using g.

val sample_without_replacement : compare:('a -> 'a -> int) -> int -> 'a t -> 'a list t

sample_without_replacement n g makes a list of n elements which are all generated randomly using g with the added constraint that none of the generated random values are equal.

deprecated

use sample_without_duplicates instead

raises Invalid_argument

if n <= 0.

since
0.15
val sample_without_duplicates : cmp:('a -> 'a -> int) -> int -> 'a t -> 'a list t

sample_without_replacement n g makes a list of n elements which are all generated randomly using g with the added constraint that none of the generated random values are equal.

raises Invalid_argument

if n <= 0.

since
2.4
val list_seq : 'a t list -> 'a list t

Build random lists from lists of random generators.

since
0.4
exception Pick_from_empty
since
0.16
val pick_list : 'a list -> 'a t

Pick an element at random from the list.

raises Pick_from_empty

if the list is empty.

since
0.16
val pick_array : 'a array -> 'a t

Pick an element at random from the array.

raises Pick_from_empty

if the array is empty.

since
0.16
val small_int : int t

A small int (100).

val int : int -> int t

Random int within the given range.

val int_range : int -> int -> int t

Inclusive range.

val small_float : float t

A reasonably small float (100.0).

since
0.6.1
val float : float -> float t

Random float within the given range.

since
0.6.1
val float_range : float -> float -> float t

Inclusive range. float_range a b assumes a < b.

since
0.6.1
val split : int -> (int * int) option t

Split a positive value n into n1,n2 where n = n1 + n2.

returns

None if the value is too small.

val split_list : int -> len:int -> int list option t

Split a value n into a list of values whose sum is n and whose length is length. The list is never empty and does not contain 0.

raises Invalid_argument

if len <= 1.

returns

None if the value is too small.

val retry : ?⁠max:int -> 'a option t -> 'a option t

retry g calls g until it returns some value, or until the maximum number of retries was reached. If g fails, then it counts for one iteration, and the generator retries.

parameter max:

maximum number of retries. Default 10.

val try_successively : 'a option t list -> 'a option t

try_successively l tries each generator of l, one after the other. If some generator succeeds its result is returned, else the next generator is tried.

val (<?>) : 'a option t -> 'a option t -> 'a option t

a <?> b is a choice operator. It first tries a, and returns its result if successful. If a fails, then b is returned.

val fix : ?⁠sub1:('a t -> 'a t) list -> ?⁠sub2:('a t -> 'a t -> 'a t) list -> ?⁠subn:(int t * ('a list t -> 'a t)) list -> base:'a t -> int t -> 'a t

Recursion combinators, for building recursive values. The integer generator is used to provide fuel. The sub_ generators should use their arguments only once!

parameter sub1

cases that recurse on one value.

parameter sub2

cases that use the recursive gen twice.

parameter subn

cases that use a list of recursive cases.

Applicative
val pure : 'a -> 'a t
val (<*>) : ('a -> 'b) t -> 'a t -> 'b t
Run a generator
val run : ?⁠st:state -> 'a t -> 'a

Using a random state (possibly the one in argument) run a generator.

\ No newline at end of file diff --git a/dev/containers/CCRef.odoc b/dev/containers/CCRef.odoc deleted file mode 100644 index 6e9820976058bc3a4de298ab83c72ef6d042bfbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1662 zcma)5U1%It6y7N_YOsVB#Y#n--JR?<}wm{h1ty1G@+HtnW@FNVqN-R_XtnaQ1* zEKQ*(_$YEWH7OD;H%%i-TaATUtf+;m!3PV~pj7)HiccyAB>Es0&%Lv=NkpNrm%TsV zch2{nbH**ZW^X>%m(yOHdE=u*BGCa$f^{#fZA)FI>jZ}7Anea~6bgq>Mc2;1eBbL& zExdcP{e$1{8SZ~&e?+_^n@DWg3fvp8rtV54lmxvky10cM0;)S;oV>EsTV(;_+qtK{JE3T-a_GN*Kunu_Ntaiw6)k8;7Y35o&;7c#y|i_DNGEjq%Az=!^)PowsIFh3lq3yZ z*U1I_%tAv{IxE~TnAb1p@N|ZdStWF=05F_>DDC1h5qEB60}&L8Cb3(!;i^fT|`bGyA^(f zkkM4HD`a{WKrH)zq^0nDr0(xb=#`u5+6E5u{pLVfzm=nI1y%ld1SZpwV=3#YcsE&| zkyf5%o<|aP^jeOIM?tbPdISaFs-bSWkufDbGP^=GFyza$k%X(Zlx#R<8KWS?jxSsA z;GlZcg&q)NIpcs-y1N-4DoIZ$S}s4(^gBhFniZX!|E4MB(OwV`DPifjlub9cFU7UX z|CW-*-QEA8WS%SeD^hZ+sRSv0oex=~i*4i}F9&^;WMnVo1xP2^QGu#}$5fD~q=Q$3 zHsA$LtrtLX@9BK5ziEAiw;*c!cYF_}kc9os)TgqhTk{Nz;I0x)up}%>LMevA471w( z!Ou<7dmZqh88%Rk$CM8xVZGU$A_?sqIoGm*J8D~g0IXTgl7t81B(n;8;U_lolJH{& r(C|3}_-qrb#b8jkDhb{O^q(ou1LViCm|K$YS&WYKOTqzu0iXUq79Wzw diff --git a/dev/containers/CCList/.jbuilder-keep b/dev/containers/CCRef/.dune-keep similarity index 100% rename from dev/containers/CCList/.jbuilder-keep rename to dev/containers/CCRef/.dune-keep diff --git a/dev/containers/CCRef/index.html b/dev/containers/CCRef/index.html index 46894c23..ff59400f 100644 --- a/dev/containers/CCRef/index.html +++ b/dev/containers/CCRef/index.html @@ -1,2 +1,2 @@ -CCRef (containers.CCRef)

Module CCRef

References

since
0.9
type 'a printer = Format.formatter -> 'a -> unit
type 'a ord = 'a -> 'a -> int
type 'a eq = 'a -> 'a -> bool
type 'a sequence = ('a -> unit) -> unit
type 'a t = 'a Pervasives.ref
val map : ('a -> 'b) -> 'a t -> 'b t

Transform the value.

val create : 'a -> 'a t

Alias to ref.

val iter : ('a -> unit) -> 'a t -> unit

Call the function on the content of the reference.

val update : ('a -> 'a) -> 'a t -> unit

Update the reference's content with the given function.

val incr_then_get : int t -> int

incr_then_get r increments r and returns its new value, think ++r.

since
0.17
val get_then_incr : int t -> int

get_then_incr r increments r and returns its old value, think r++.

since
0.17
val swap : 'a t -> 'a t -> unit

swap t1 t2 puts !t2 in t1 and !t1 in t2.

since
1.4
val compare : 'a ord -> 'a t ord
val equal : 'a eq -> 'a t eq
val to_list : 'a t -> 'a list
val to_seq : 'a t -> 'a sequence
val pp : 'a printer -> 'a t printer
\ No newline at end of file +CCRef (containers.CCRef)

Module CCRef

References

since
0.9
type 'a printer = Format.formatter -> 'a -> unit
type 'a ord = 'a -> 'a -> int
type 'a eq = 'a -> 'a -> bool
type 'a sequence = ('a -> unit) -> unit
type 'a t = 'a Pervasives.ref
val map : ('a -> 'b) -> 'a t -> 'b t

Transform the value.

val create : 'a -> 'a t

Alias to ref.

val iter : ('a -> unit) -> 'a t -> unit

Call the function on the content of the reference.

val update : ('a -> 'a) -> 'a t -> unit

Update the reference's content with the given function.

val incr_then_get : int t -> int

incr_then_get r increments r and returns its new value, think ++r.

since
0.17
val get_then_incr : int t -> int

get_then_incr r increments r and returns its old value, think r++.

since
0.17
val swap : 'a t -> 'a t -> unit

swap t1 t2 puts !t2 in t1 and !t1 in t2.

since
1.4
val compare : 'a ord -> 'a t ord
val equal : 'a eq -> 'a t eq
val to_list : 'a t -> 'a list
val to_seq : 'a t -> 'a sequence
val pp : 'a printer -> 'a t printer
\ No newline at end of file diff --git a/dev/containers/CCResult.odoc b/dev/containers/CCResult.odoc deleted file mode 100644 index 8a11feb2b482ab52f6075c012ed75bd8458a1654..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9191 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 UWDzZ9H?G;y#|=`Q&V$B(0k?|a)&Kwi diff --git a/dev/containers/CCListLabels/.jbuilder-keep b/dev/containers/CCResult/.dune-keep similarity index 100% rename from dev/containers/CCListLabels/.jbuilder-keep rename to dev/containers/CCResult/.dune-keep diff --git a/dev/containers/CCResult/Infix/index.html b/dev/containers/CCResult/Infix/index.html index 3e0da1e9..46f44ae5 100644 --- a/dev/containers/CCResult/Infix/index.html +++ b/dev/containers/CCResult/Infix/index.html @@ -1,2 +1,2 @@ -Infix (containers.CCResult.Infix)

Module CCResult.Infix

val (>|=) : ('a'err) t -> ('a -> 'b) -> ('b'err) t
val (>>=) : ('a'err) t -> ('a -> ('b'err) t) -> ('b'err) t

Monadic composition. e >>= f proceeds as f x if e is Ok x or returns e if e is an Error.

val (<*>) : ('a -> 'b'err) t -> ('a'err) t -> ('b'err) t

a <*> b evaluates a and b, and, in case of success, returns Ok (a b). Otherwise, it fails, and the error of a is chosen over the error of b if both fail.

\ No newline at end of file +Infix (containers.CCResult.Infix)

Module CCResult.Infix

val (>|=) : ('a'err) t -> ('a -> 'b) -> ('b'err) t
val (>>=) : ('a'err) t -> ('a -> ('b'err) t) -> ('b'err) t

Monadic composition. e >>= f proceeds as f x if e is Ok x or returns e if e is an Error.

val (<*>) : ('a -> 'b'err) t -> ('a'err) t -> ('b'err) t

a <*> b evaluates a and b, and, in case of success, returns Ok (a b). Otherwise, it fails, and the error of a is chosen over the error of b if both fail.

\ No newline at end of file diff --git a/dev/containers/CCResult/Traverse/argument-1-M/index.html b/dev/containers/CCResult/Traverse/argument-1-M/index.html index cd198849..722aa66a 100644 --- a/dev/containers/CCResult/Traverse/argument-1-M/index.html +++ b/dev/containers/CCResult/Traverse/argument-1-M/index.html @@ -1,2 +1,2 @@ -1-M (containers.CCResult.Traverse.1-M)

Parameter Traverse.1-M

type 'a t
val return : 'a -> 'a t

Monadic return.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

\ No newline at end of file +1-M (containers.CCResult.Traverse.1-M)

Parameter Traverse.1-M

type 'a t
val return : 'a -> 'a t

Monadic return.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

\ No newline at end of file diff --git a/dev/containers/CCResult/Traverse/index.html b/dev/containers/CCResult/Traverse/index.html index f455d5ab..6e166a6d 100644 --- a/dev/containers/CCResult/Traverse/index.html +++ b/dev/containers/CCResult/Traverse/index.html @@ -1,2 +1,2 @@ -Traverse (containers.CCResult.Traverse)

Module CCResult.Traverse

Parameters

Signature

val sequence_m : ('a M.t'err) t -> ('a'err) t M.t
val fold_m : ('b -> 'a -> 'b M.t) -> 'b -> ('a'err) t -> 'b M.t
val map_m : ('a -> 'b M.t) -> ('a'err) t -> ('b'err) t M.t
val retry_m : int -> (unit -> ('a'err) t M.t) -> ('a'err list) t M.t
\ No newline at end of file +Traverse (containers.CCResult.Traverse)

Module CCResult.Traverse

Parameters

Signature

val sequence_m : ('a M.t'err) t -> ('a'err) t M.t
val fold_m : ('b -> 'a -> 'b M.t) -> 'b -> ('a'err) t -> 'b M.t
val map_m : ('a -> 'b M.t) -> ('a'err) t -> ('b'err) t M.t
val retry_m : int -> (unit -> ('a'err) t M.t) -> ('a'err list) t M.t
\ No newline at end of file diff --git a/dev/containers/CCResult/index.html b/dev/containers/CCResult/index.html index e9e24ddc..279ed378 100644 --- a/dev/containers/CCResult/index.html +++ b/dev/containers/CCResult/index.html @@ -1,2 +1,2 @@ -CCResult (containers.CCResult)

Module CCResult

Error Monad

Uses the new "result" type from OCaml 4.03.

since
0.16
type 'a sequence = ('a -> unit) -> unit
type 'a equal = 'a -> 'a -> bool
type 'a ord = 'a -> 'a -> int
type 'a printer = Format.formatter -> 'a -> unit

Basics

since
1.5
include module type of sig ... end
type ('a, 'b) result = ('a'b) Pervasives.result =
| Ok of 'a
| Error of 'b
type (+'good, +'bad) t = ('good'bad) Result.result =
| Ok of 'good
| Error of 'bad
val return : 'a -> ('a'err) t

Successfully return a value.

val fail : 'err -> ('a'err) t

Fail with an error.

val of_exn : exn -> ('a, string) t

of_exn e uses Printexc to print the exception as a string.

val of_exn_trace : exn -> ('a, string) t

of_exn_trace e is similar to of_exn e, but it adds the stacktrace to the error message.

Remember to call Printexc.record_backtrace true and compile with the debug flag for this to work.

val fail_printf : ('a, Buffer.t, unit, ('b, string) t) Pervasives.format4 -> 'a

fail_printf format uses format to obtain an error message and then returns Error msg.

val fail_fprintf : ('a, Format.formatter, unit, ('b, string) t) Pervasives.format4 -> 'a

fail_fprintf format uses format to obtain an error message and then returns Error msg.

val add_ctx : string -> ('a, string) t -> ('a, string) t

add_ctx msg leaves Ok x untouched, but transforms Error s into Error s' where s' contains the additional context given by msg.

since
1.2
val add_ctxf : ('a, Format.formatter, unit, ('b, string) t -> ('b, string) t) Pervasives.format4 -> 'a

add_ctxf format_message is similar to add_ctx but with Format for printing the message (eagerly). Example:

add_ctxf "message(number %d, foo: %B)" 42 true (Error "error)"
since
1.2
val map : ('a -> 'b) -> ('a'err) t -> ('b'err) t

Map on success.

val map_err : ('err1 -> 'err2) -> ('a'err1) t -> ('a'err2) t

Map on the error variant.

val map2 : ('a -> 'b) -> ('err1 -> 'err2) -> ('a'err1) t -> ('b'err2) t

Like map, but also with a function that can transform the error message in case of failure.

val iter : ('a -> unit) -> ('a_) t -> unit

Apply the function only in case of Ok.

val iter_err : ('err -> unit) -> (_'err) t -> unit

Apply the function in case of Error.

since
2.4
exception Get_error
val get_exn : ('a_) t -> 'a

Extract the value x from Ok x, fails otherwise. You should be careful with this function, and favor other combinators whenever possible.

raises Get_error

if the value is an error.

val get_or : ('a_) t -> default:'a -> 'a

get_or e ~default returns x if e = Ok x, default otherwise.

val get_or_failwith : ('a, string) t -> 'a

get_or_failwith e returns x if e = Ok x, fails otherwise.

raises Failure

with msg if e = Error msg.

since
2.4
val map_or : ('a -> 'b) -> ('a'c) t -> default:'b -> 'b

map_or f e ~default returns f x if e = Ok x, default otherwise.

val catch : ('a'err) t -> ok:('a -> 'b) -> err:('err -> 'b) -> 'b

catch e ~ok ~err calls either ok or err depending on the value of e.

val flat_map : ('a -> ('b'err) t) -> ('a'err) t -> ('b'err) t
val (>|=) : ('a'err) t -> ('a -> 'b) -> ('b'err) t
val (>>=) : ('a'err) t -> ('a -> ('b'err) t) -> ('b'err) t

Monadic composition. e >>= f proceeds as f x if e is Ok x or returns e if e is an Error.

val equal : err:'err equal -> 'a equal -> ('a'err) t equal
val compare : err:'err ord -> 'a ord -> ('a'err) t ord
val fold : ok:('a -> 'b) -> error:('err -> 'b) -> ('a'err) t -> 'b

fold ~ok ~error e opens e and, if e = Ok x, returns ok x, otherwise e = Error s and it returns error s.

val fold_ok : ('a -> 'b -> 'a) -> 'a -> ('b_) t -> 'a

fold_ok f acc r will compute f acc x if r=Ok x, and return acc otherwise, as if the result were a mere option.

since
1.2
val is_ok : ('a'err) t -> bool

Return true if Ok.

since
1.0
val is_error : ('a'err) t -> bool

Return true if Error.

since
1.0

Wrappers

val guard : (unit -> 'a) -> ('a, exn) t

guard f runs f () and returns its result wrapped in Ok. If f () raises some exception e, then it fails with Error e.

val guard_str : (unit -> 'a) -> ('a, string) t

Like guard but uses of_exn to print the exception.

val guard_str_trace : (unit -> 'a) -> ('a, string) t

Like guard_str but uses of_exn_trace instead of of_exn so that the stack trace is printed.

val wrap1 : ('a -> 'b) -> 'a -> ('b, exn) t

Like guard but gives the function one argument.

val wrap2 : ('a -> 'b -> 'c) -> 'a -> 'b -> ('c, exn) t

Like guard but gives the function two arguments.

val wrap3 : ('a -> 'b -> 'c -> 'd) -> 'a -> 'b -> 'c -> ('d, exn) t

Like guard but gives the function three arguments.

Applicative

val pure : 'a -> ('a'err) t

Synonym of return.

val (<*>) : ('a -> 'b'err) t -> ('a'err) t -> ('b'err) t

a <*> b evaluates a and b, and, in case of success, returns Ok (a b). Otherwise, it fails, and the error of a is chosen over the error of b if both fail.

val join : (('a'err) t'err) t -> ('a'err) t

join t, in case of success, returns Ok o from Ok (Ok o). Otherwise, it fails with Error e where e is the unwrapped error of t.

val both : ('a'err) t -> ('b'err) t -> ('a * 'b'err) t

both a b, in case of success, returns Ok (o, o') with the ok values of a and b. Otherwise, it fails, and the error of a is chosen over the error of b if both fail.

Infix

module Infix : sig ... end

Collections

val map_l : ('a -> ('b'err) t) -> 'a list -> ('b list, 'err) t

map_l f [a1; ...; an] applies the function f to a1, ..., an , and, in case of success for every element, returns the list of Ok-value. Otherwise, it fails and returns the first error encountered. Tail-recursive.

val fold_l : ('b -> 'a -> ('b'err) t) -> 'b -> 'a list -> ('b'err) t
val fold_seq : ('b -> 'a -> ('b'err) t) -> 'b -> 'a sequence -> ('b'err) t

Misc

val choose : ('a'err) t list -> ('a'err list) t

choose l selects a member of l that is a Ok _ value, or returns Error l otherwise, where l is the list of errors.

val retry : int -> (unit -> ('a'err) t) -> ('a'err list) t

retry n f calls f at most n times, returning the first result of f () that doesn't fail. If f fails n times, retry n f fails with the list of successive errors.

module type MONAD = sig ... end
module Traverse : functor (M : MONAD) -> sig ... end

Conversions

val to_opt : ('a_) t -> 'a option

Convert a result to an option.

val of_opt : 'a option -> ('a, string) t

Convert an option to a result.

val to_seq : ('a_) t -> 'a sequence
type ('a, 'b) error = [
| `Ok of 'a
| `Error of 'b
]
val of_err : ('a'b) error -> ('a'b) t
since
0.17
val to_err : ('a'b) t -> ('a'b) error
since
0.17

IO

val pp : 'a printer -> ('a, string) t printer
val pp' : 'a printer -> 'e printer -> ('a'e) t printer

Printer that is generic on the error type.

\ No newline at end of file +CCResult (containers.CCResult)

Module CCResult

Error Monad

Uses the new "result" type from OCaml 4.03.

since
0.16
type 'a sequence = ('a -> unit) -> unit
type 'a equal = 'a -> 'a -> bool
type 'a ord = 'a -> 'a -> int
type 'a printer = Format.formatter -> 'a -> unit

Basics

since
1.5
include module type of sig ... end
type nonrec ('a, 'b) result = ('a'b) Pervasives.result =
| Ok of 'a
| Error of 'b
type (+'good, +'bad) t = ('good'bad) Result.result =
| Ok of 'good
| Error of 'bad
val return : 'a -> ('a'err) t

Successfully return a value.

val fail : 'err -> ('a'err) t

Fail with an error.

val of_exn : exn -> ('a, string) t

of_exn e uses Printexc to print the exception as a string.

val of_exn_trace : exn -> ('a, string) t

of_exn_trace e is similar to of_exn e, but it adds the stacktrace to the error message.

Remember to call Printexc.record_backtrace true and compile with the debug flag for this to work.

val fail_printf : ('a, Buffer.t, unit, ('b, string) t) Pervasives.format4 -> 'a

fail_printf format uses format to obtain an error message and then returns Error msg.

val fail_fprintf : ('a, Format.formatter, unit, ('b, string) t) Pervasives.format4 -> 'a

fail_fprintf format uses format to obtain an error message and then returns Error msg.

val add_ctx : string -> ('a, string) t -> ('a, string) t

add_ctx msg leaves Ok x untouched, but transforms Error s into Error s' where s' contains the additional context given by msg.

since
1.2
val add_ctxf : ('a, Format.formatter, unit, ('b, string) t -> ('b, string) t) Pervasives.format4 -> 'a

add_ctxf format_message is similar to add_ctx but with Format for printing the message (eagerly). Example:

add_ctxf "message(number %d, foo: %B)" 42 true (Error "error)"
since
1.2
val map : ('a -> 'b) -> ('a'err) t -> ('b'err) t

Map on success.

val map_err : ('err1 -> 'err2) -> ('a'err1) t -> ('a'err2) t

Map on the error variant.

val map2 : ('a -> 'b) -> ('err1 -> 'err2) -> ('a'err1) t -> ('b'err2) t

Like map, but also with a function that can transform the error message in case of failure.

val iter : ('a -> unit) -> ('a_) t -> unit

Apply the function only in case of Ok.

val iter_err : ('err -> unit) -> (_'err) t -> unit

Apply the function in case of Error.

since
2.4
exception Get_error
val get_exn : ('a_) t -> 'a

Extract the value x from Ok x, fails otherwise. You should be careful with this function, and favor other combinators whenever possible.

raises Get_error

if the value is an error.

val get_or : ('a_) t -> default:'a -> 'a

get_or e ~default returns x if e = Ok x, default otherwise.

val get_or_failwith : ('a, string) t -> 'a

get_or_failwith e returns x if e = Ok x, fails otherwise.

raises Failure

with msg if e = Error msg.

since
2.4
val map_or : ('a -> 'b) -> ('a'c) t -> default:'b -> 'b

map_or f e ~default returns f x if e = Ok x, default otherwise.

val catch : ('a'err) t -> ok:('a -> 'b) -> err:('err -> 'b) -> 'b

catch e ~ok ~err calls either ok or err depending on the value of e.

val flat_map : ('a -> ('b'err) t) -> ('a'err) t -> ('b'err) t
val (>|=) : ('a'err) t -> ('a -> 'b) -> ('b'err) t
val (>>=) : ('a'err) t -> ('a -> ('b'err) t) -> ('b'err) t

Monadic composition. e >>= f proceeds as f x if e is Ok x or returns e if e is an Error.

val equal : err:'err equal -> 'a equal -> ('a'err) t equal
val compare : err:'err ord -> 'a ord -> ('a'err) t ord
val fold : ok:('a -> 'b) -> error:('err -> 'b) -> ('a'err) t -> 'b

fold ~ok ~error e opens e and, if e = Ok x, returns ok x, otherwise e = Error s and it returns error s.

val fold_ok : ('a -> 'b -> 'a) -> 'a -> ('b_) t -> 'a

fold_ok f acc r will compute f acc x if r=Ok x, and return acc otherwise, as if the result were a mere option.

since
1.2
val is_ok : ('a'err) t -> bool

Return true if Ok.

since
1.0
val is_error : ('a'err) t -> bool

Return true if Error.

since
1.0

Wrappers

val guard : (unit -> 'a) -> ('a, exn) t

guard f runs f () and returns its result wrapped in Ok. If f () raises some exception e, then it fails with Error e.

val guard_str : (unit -> 'a) -> ('a, string) t

Like guard but uses of_exn to print the exception.

val guard_str_trace : (unit -> 'a) -> ('a, string) t

Like guard_str but uses of_exn_trace instead of of_exn so that the stack trace is printed.

val wrap1 : ('a -> 'b) -> 'a -> ('b, exn) t

Like guard but gives the function one argument.

val wrap2 : ('a -> 'b -> 'c) -> 'a -> 'b -> ('c, exn) t

Like guard but gives the function two arguments.

val wrap3 : ('a -> 'b -> 'c -> 'd) -> 'a -> 'b -> 'c -> ('d, exn) t

Like guard but gives the function three arguments.

Applicative

val pure : 'a -> ('a'err) t

Synonym of return.

val (<*>) : ('a -> 'b'err) t -> ('a'err) t -> ('b'err) t

a <*> b evaluates a and b, and, in case of success, returns Ok (a b). Otherwise, it fails, and the error of a is chosen over the error of b if both fail.

val join : (('a'err) t'err) t -> ('a'err) t

join t, in case of success, returns Ok o from Ok (Ok o). Otherwise, it fails with Error e where e is the unwrapped error of t.

val both : ('a'err) t -> ('b'err) t -> ('a * 'b'err) t

both a b, in case of success, returns Ok (o, o') with the ok values of a and b. Otherwise, it fails, and the error of a is chosen over the error of b if both fail.

Infix

module Infix : sig ... end

Collections

val flatten_l : ('a'err) t list -> ('a list'err) t

Same as map_l id: returns Ok [x1;…;xn] if l=[Ok x1; …; Ok xn], or the first error otherwise.

since
NEXT_RELEASE
val map_l : ('a -> ('b'err) t) -> 'a list -> ('b list'err) t

map_l f [a1; ...; an] applies the function f to a1, ..., an , and, in case of success for every element, returns the list of Ok-value. Otherwise, it fails and returns the first error encountered. Tail-recursive.

val fold_l : ('b -> 'a -> ('b'err) t) -> 'b -> 'a list -> ('b'err) t
val fold_seq : ('b -> 'a -> ('b'err) t) -> 'b -> 'a sequence -> ('b'err) t

Misc

val choose : ('a'err) t list -> ('a'err list) t

choose l selects a member of l that is a Ok _ value, or returns Error l otherwise, where l is the list of errors.

val retry : int -> (unit -> ('a'err) t) -> ('a'err list) t

retry n f calls f at most n times, returning the first result of f () that doesn't fail. If f fails n times, retry n f fails with the list of successive errors.

module type MONAD = sig ... end
module Traverse : functor (M : MONAD) -> sig ... end

Conversions

val to_opt : ('a_) t -> 'a option

Convert a result to an option.

val of_opt : 'a option -> ('a, string) t

Convert an option to a result.

val to_seq : ('a_) t -> 'a sequence
type ('a, 'b) error = [
| `Ok of 'a
| `Error of 'b
]
val of_err : ('a'b) error -> ('a'b) t
since
0.17
val to_err : ('a'b) t -> ('a'b) error
since
0.17

IO

val pp : 'a printer -> ('a, string) t printer
val pp' : 'a printer -> 'e printer -> ('a'e) t printer

Printer that is generic on the error type.

\ No newline at end of file diff --git a/dev/containers/CCResult/module-type-MONAD/index.html b/dev/containers/CCResult/module-type-MONAD/index.html index 62dd06d6..ba1859d0 100644 --- a/dev/containers/CCResult/module-type-MONAD/index.html +++ b/dev/containers/CCResult/module-type-MONAD/index.html @@ -1,2 +1,2 @@ -MONAD (containers.CCResult.MONAD)

Module type CCResult.MONAD

Monadic Operations

type 'a t
val return : 'a -> 'a t

Monadic return.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

\ No newline at end of file +MONAD (containers.CCResult.MONAD)

Module type CCResult.MONAD

Monadic Operations

type 'a t
val return : 'a -> 'a t

Monadic return.

val (>>=) : 'a t -> ('a -> 'b t) -> 'b t

Monadic bind.

\ No newline at end of file diff --git a/dev/containers/CCMap/.jbuilder-keep b/dev/containers/CCRingBuffer/.dune-keep similarity index 100% rename from dev/containers/CCMap/.jbuilder-keep rename to dev/containers/CCRingBuffer/.dune-keep diff --git a/dev/containers/CCRingBuffer/Array/Byte/index.html b/dev/containers/CCRingBuffer/Array/Byte/index.html new file mode 100644 index 00000000..4ebb853b --- /dev/null +++ b/dev/containers/CCRingBuffer/Array/Byte/index.html @@ -0,0 +1,2 @@ + +Byte (containers.CCRingBuffer.Array.Byte)

Module Array.Byte

Efficient array version for the char type

type elt = char

The element type

type t = Bytes.t

The type of an array instance

val dummy : elt

A dummy element used for empty slots in the array

since
2.4
val create : int -> t

Make an array of the given size, filled with dummy elements.

val length : t -> int

length t gets the total number of elements currently in t.

val get : t -> int -> elt

get t i gets the element at position i.

val set : t -> int -> elt -> unit

set t i e sets the element at position i to e.

val sub : t -> int -> int -> t

sub t i len gets the sub-array of t from position i to i + len.

val copy : t -> t

copy t makes a fresh copy of the array t.

val blit : t -> int -> t -> int -> int -> unit

blit t s arr i len copies len elements from arr starting at i to position s from t.

val iter : (elt -> unit) -> t -> unit

iter f t iterates over the array t invoking f with the current element, in array order.

\ No newline at end of file diff --git a/dev/containers/CCRingBuffer/Array/Make/argument-1-Elt/index.html b/dev/containers/CCRingBuffer/Array/Make/argument-1-Elt/index.html new file mode 100644 index 00000000..4e1539a1 --- /dev/null +++ b/dev/containers/CCRingBuffer/Array/Make/argument-1-Elt/index.html @@ -0,0 +1,2 @@ + +1-Elt (containers.CCRingBuffer.Array.Make.1-Elt)

Parameter Make.1-Elt

type t
val dummy : t
\ No newline at end of file diff --git a/dev/containers/CCRingBuffer/Array/Make/index.html b/dev/containers/CCRingBuffer/Array/Make/index.html new file mode 100644 index 00000000..a1de6c7a --- /dev/null +++ b/dev/containers/CCRingBuffer/Array/Make/index.html @@ -0,0 +1,2 @@ + +Make (containers.CCRingBuffer.Array.Make)

Module Array.Make

Makes an array given an arbitrary element type

Parameters

  • Elt : sig ... end

Signature

type elt = Elt.t

The element type

type t = Elt.t array

The type of an array instance

val dummy : elt

A dummy element used for empty slots in the array

since
2.4
val create : int -> t

Make an array of the given size, filled with dummy elements.

val length : t -> int

length t gets the total number of elements currently in t.

val get : t -> int -> elt

get t i gets the element at position i.

val set : t -> int -> elt -> unit

set t i e sets the element at position i to e.

val sub : t -> int -> int -> t

sub t i len gets the sub-array of t from position i to i + len.

val copy : t -> t

copy t makes a fresh copy of the array t.

val blit : t -> int -> t -> int -> int -> unit

blit t s arr i len copies len elements from arr starting at i to position s from t.

val iter : (elt -> unit) -> t -> unit

iter f t iterates over the array t invoking f with the current element, in array order.

\ No newline at end of file diff --git a/dev/containers/CCRingBuffer/Array/index.html b/dev/containers/CCRingBuffer/Array/index.html new file mode 100644 index 00000000..dcbe0ada --- /dev/null +++ b/dev/containers/CCRingBuffer/Array/index.html @@ -0,0 +1,2 @@ + +Array (containers.CCRingBuffer.Array)

Module CCRingBuffer.Array

The abstract type for arrays

module type S = sig ... end
module Byte : S with type elt = char and type t = Bytes.t

Efficient array version for the char type

module Make : functor (Elt : sig ... end) -> S with type elt = Elt.t and type t = Elt.t array

Makes an array given an arbitrary element type

\ No newline at end of file diff --git a/dev/containers/CCRingBuffer/Array/module-type-S/index.html b/dev/containers/CCRingBuffer/Array/module-type-S/index.html new file mode 100644 index 00000000..9ea21b0d --- /dev/null +++ b/dev/containers/CCRingBuffer/Array/module-type-S/index.html @@ -0,0 +1,2 @@ + +S (containers.CCRingBuffer.Array.S)

Module type Array.S

type elt

The element type

type t

The type of an array instance

val dummy : elt

A dummy element used for empty slots in the array

since
2.4
val create : int -> t

Make an array of the given size, filled with dummy elements.

val length : t -> int

length t gets the total number of elements currently in t.

val get : t -> int -> elt

get t i gets the element at position i.

val set : t -> int -> elt -> unit

set t i e sets the element at position i to e.

val sub : t -> int -> int -> t

sub t i len gets the sub-array of t from position i to i + len.

val copy : t -> t

copy t makes a fresh copy of the array t.

val blit : t -> int -> t -> int -> int -> unit

blit t s arr i len copies len elements from arr starting at i to position s from t.

val iter : (elt -> unit) -> t -> unit

iter f t iterates over the array t invoking f with the current element, in array order.

\ No newline at end of file diff --git a/dev/containers/CCRingBuffer/Byte/index.html b/dev/containers/CCRingBuffer/Byte/index.html new file mode 100644 index 00000000..c6a45771 --- /dev/null +++ b/dev/containers/CCRingBuffer/Byte/index.html @@ -0,0 +1,2 @@ + +Byte (containers.CCRingBuffer.Byte)

Module CCRingBuffer.Byte

An efficient byte based ring buffer

module Array = Array.Byte

The module type of Array for this ring buffer

type t

Defines the bounded ring buffer type

exception Empty

Raised in querying functions when the buffer is empty

val create : int -> t

create size creates a new bounded buffer with given size. The underlying array is allocated immediately and no further (large) allocation will happen from now on.

raises Invalid_argument

if the argument is < 1.

val copy : t -> t

Make a fresh copy of the buffer.

val capacity : t -> int

Length of the inner buffer.

val length : t -> int

Number of elements currently stored in the buffer.

val is_full : t -> bool

true if pushing an element would erase another element.

since
1.3
val blit_from : t -> Array.t -> int -> int -> unit

blit_from buf from_buf o len copies the slice o, ... o + len - 1 from an input buffer from_buf to the end of the buffer. If the slice is too large for the buffer, only the last part of the array will be copied.

raises Invalid_argument

if o,len is not a valid slice of s.

val blit_into : t -> Array.t -> int -> int -> int

blit_into buf to_buf o len copies at most len elements from buf into to_buf starting at offset o in s.

returns

the number of elements actually copied (min len (length buf)).

raises Invalid_argument

if o,len is not a valid slice of s.

val append : t -> into:t -> unit

append b ~into copies all data from b and adds it at the end of into. Erases data of into if there is not enough room.

val to_list : t -> Array.elt list

Extract the current content into a list.

val clear : t -> unit

Clear the content of the buffer

val is_empty : t -> bool

Is the buffer empty (i.e. contains no elements)?

val junk_front : t -> unit

Drop the front element from t.

raises Empty

if the buffer is already empty.

val junk_back : t -> unit

Drop the back element from t.

raises Empty

if the buffer is already empty.

val skip : t -> int -> unit

skip b len removes len elements from the front of b.

raises Invalid_argument

if len > length b.

val iter : t -> f:(Array.elt -> unit) -> unit

iter b ~f calls f i t for each element t in buf.

val iteri : t -> f:(int -> Array.elt -> unit) -> unit

iteri b ~f calls f i t for each element t in buf, with i being its relative index within buf.

val get_front : t -> int -> Array.elt

get_front buf i returns the i-th element of buf from the front, i.e. the one returned by take_front buf after i-1 calls to junk_front buf.

raises Invalid_argument

if the index is invalid (> length buf).

val get_back : t -> int -> Array.elt

get_back buf i returns the i-th element of buf from the back, i.e. the one returned by take_back buf after i-1 calls to junk_back buf.

raises Invalid_argument

if the index is invalid (> length buf).

val push_back : t -> Array.elt -> unit

Push value at the back of t. If t.bounded=false, the buffer will grow as needed, otherwise the oldest elements are replaced first.

val peek_front : t -> Array.elt option

First value from front of t, without modification.

val peek_front_exn : t -> Array.elt

First value from front of t, without modification.

raises Empty

if buffer is empty.

since
1.3
val peek_back : t -> Array.elt option

Get the last value from back of t, without modification.

val peek_back_exn : t -> Array.elt

Get the last value from back of t, without modification.

raises Empty

if buffer is empty.

since
1.3
val take_back : t -> Array.elt option

Take and remove the last value from back of t, if any.

val take_back_exn : t -> Array.elt

Take and remove the last value from back of t.

raises Empty

if buffer is already empty.

val take_front : t -> Array.elt option

Take and remove the first value from front of t, if any.

val take_front_exn : t -> Array.elt

Take and remove the first value from front of t.

raises Empty

if buffer is already empty.

val of_array : Array.t -> t

Create a buffer from an initial array, but doesn't take ownership of it (still allocates a new internal array).

since
0.11
val to_array : t -> Array.t

Create an array from the elements, in order.

since
0.11
\ No newline at end of file diff --git a/dev/containers/CCRingBuffer/Make/Array/index.html b/dev/containers/CCRingBuffer/Make/Array/index.html new file mode 100644 index 00000000..c5e2617b --- /dev/null +++ b/dev/containers/CCRingBuffer/Make/Array/index.html @@ -0,0 +1,2 @@ + +Array (containers.CCRingBuffer.Make.Array)

Module Make.Array

The module type of Array for this ring buffer

type elt = X.t

The element type

type t = X.t array

The type of an array instance

val dummy : elt

A dummy element used for empty slots in the array

since
2.4
val create : int -> t

Make an array of the given size, filled with dummy elements.

val length : t -> int

length t gets the total number of elements currently in t.

val get : t -> int -> elt

get t i gets the element at position i.

val set : t -> int -> elt -> unit

set t i e sets the element at position i to e.

val sub : t -> int -> int -> t

sub t i len gets the sub-array of t from position i to i + len.

val copy : t -> t

copy t makes a fresh copy of the array t.

val blit : t -> int -> t -> int -> int -> unit

blit t s arr i len copies len elements from arr starting at i to position s from t.

val iter : (elt -> unit) -> t -> unit

iter f t iterates over the array t invoking f with the current element, in array order.

\ No newline at end of file diff --git a/dev/containers/CCRingBuffer/Make/argument-1-X/index.html b/dev/containers/CCRingBuffer/Make/argument-1-X/index.html new file mode 100644 index 00000000..91729d13 --- /dev/null +++ b/dev/containers/CCRingBuffer/Make/argument-1-X/index.html @@ -0,0 +1,2 @@ + +1-X (containers.CCRingBuffer.Make.1-X)

Parameter Make.1-X

type t
val dummy : t
\ No newline at end of file diff --git a/dev/containers/CCRingBuffer/Make/index.html b/dev/containers/CCRingBuffer/Make/index.html new file mode 100644 index 00000000..1ea14f74 --- /dev/null +++ b/dev/containers/CCRingBuffer/Make/index.html @@ -0,0 +1,2 @@ + +Make (containers.CCRingBuffer.Make)

Module CCRingBuffer.Make

Buffer using regular arrays

Parameters

  • X : sig ... end

Signature

module Array : Array.S with type elt = X.t and type t = X.t array

The module type of Array for this ring buffer

type t

Defines the bounded ring buffer type

exception Empty

Raised in querying functions when the buffer is empty

val create : int -> t

create size creates a new bounded buffer with given size. The underlying array is allocated immediately and no further (large) allocation will happen from now on.

raises Invalid_argument

if the argument is < 1.

val copy : t -> t

Make a fresh copy of the buffer.

val capacity : t -> int

Length of the inner buffer.

val length : t -> int

Number of elements currently stored in the buffer.

val is_full : t -> bool

true if pushing an element would erase another element.

since
1.3
val blit_from : t -> Array.t -> int -> int -> unit

blit_from buf from_buf o len copies the slice o, ... o + len - 1 from an input buffer from_buf to the end of the buffer. If the slice is too large for the buffer, only the last part of the array will be copied.

raises Invalid_argument

if o,len is not a valid slice of s.

val blit_into : t -> Array.t -> int -> int -> int

blit_into buf to_buf o len copies at most len elements from buf into to_buf starting at offset o in s.

returns

the number of elements actually copied (min len (length buf)).

raises Invalid_argument

if o,len is not a valid slice of s.

val append : t -> into:t -> unit

append b ~into copies all data from b and adds it at the end of into. Erases data of into if there is not enough room.

val to_list : t -> Array.elt list

Extract the current content into a list.

val clear : t -> unit

Clear the content of the buffer

val is_empty : t -> bool

Is the buffer empty (i.e. contains no elements)?

val junk_front : t -> unit

Drop the front element from t.

raises Empty

if the buffer is already empty.

val junk_back : t -> unit

Drop the back element from t.

raises Empty

if the buffer is already empty.

val skip : t -> int -> unit

skip b len removes len elements from the front of b.

raises Invalid_argument

if len > length b.

val iter : t -> f:(Array.elt -> unit) -> unit

iter b ~f calls f i t for each element t in buf.

val iteri : t -> f:(int -> Array.elt -> unit) -> unit

iteri b ~f calls f i t for each element t in buf, with i being its relative index within buf.

val get_front : t -> int -> Array.elt

get_front buf i returns the i-th element of buf from the front, i.e. the one returned by take_front buf after i-1 calls to junk_front buf.

raises Invalid_argument

if the index is invalid (> length buf).

val get_back : t -> int -> Array.elt

get_back buf i returns the i-th element of buf from the back, i.e. the one returned by take_back buf after i-1 calls to junk_back buf.

raises Invalid_argument

if the index is invalid (> length buf).

val push_back : t -> Array.elt -> unit

Push value at the back of t. If t.bounded=false, the buffer will grow as needed, otherwise the oldest elements are replaced first.

val peek_front : t -> Array.elt option

First value from front of t, without modification.

val peek_front_exn : t -> Array.elt

First value from front of t, without modification.

raises Empty

if buffer is empty.

since
1.3
val peek_back : t -> Array.elt option

Get the last value from back of t, without modification.

val peek_back_exn : t -> Array.elt

Get the last value from back of t, without modification.

raises Empty

if buffer is empty.

since
1.3
val take_back : t -> Array.elt option

Take and remove the last value from back of t, if any.

val take_back_exn : t -> Array.elt

Take and remove the last value from back of t.

raises Empty

if buffer is already empty.

val take_front : t -> Array.elt option

Take and remove the first value from front of t, if any.

val take_front_exn : t -> Array.elt

Take and remove the first value from front of t.

raises Empty

if buffer is already empty.

val of_array : Array.t -> t

Create a buffer from an initial array, but doesn't take ownership of it (still allocates a new internal array).

since
0.11
val to_array : t -> Array.t

Create an array from the elements, in order.

since
0.11
\ No newline at end of file diff --git a/dev/containers/CCRingBuffer/MakeFromArray/argument-1-A/index.html b/dev/containers/CCRingBuffer/MakeFromArray/argument-1-A/index.html new file mode 100644 index 00000000..05109efa --- /dev/null +++ b/dev/containers/CCRingBuffer/MakeFromArray/argument-1-A/index.html @@ -0,0 +1,2 @@ + +1-A (containers.CCRingBuffer.MakeFromArray.1-A)

Parameter MakeFromArray.1-A

type elt

The element type

type t

The type of an array instance

val dummy : elt

A dummy element used for empty slots in the array

since
2.4
val create : int -> t

Make an array of the given size, filled with dummy elements.

val length : t -> int

length t gets the total number of elements currently in t.

val get : t -> int -> elt

get t i gets the element at position i.

val set : t -> int -> elt -> unit

set t i e sets the element at position i to e.

val sub : t -> int -> int -> t

sub t i len gets the sub-array of t from position i to i + len.

val copy : t -> t

copy t makes a fresh copy of the array t.

val blit : t -> int -> t -> int -> int -> unit

blit t s arr i len copies len elements from arr starting at i to position s from t.

val iter : (elt -> unit) -> t -> unit

iter f t iterates over the array t invoking f with the current element, in array order.

\ No newline at end of file diff --git a/dev/containers/CCRingBuffer/MakeFromArray/index.html b/dev/containers/CCRingBuffer/MakeFromArray/index.html new file mode 100644 index 00000000..5954d63f --- /dev/null +++ b/dev/containers/CCRingBuffer/MakeFromArray/index.html @@ -0,0 +1,2 @@ + +MakeFromArray (containers.CCRingBuffer.MakeFromArray)

Module CCRingBuffer.MakeFromArray

Makes a ring buffer module with the given array type

Parameters

Signature

module Array = A

The module type of Array for this ring buffer

type t

Defines the bounded ring buffer type

exception Empty

Raised in querying functions when the buffer is empty

val create : int -> t

create size creates a new bounded buffer with given size. The underlying array is allocated immediately and no further (large) allocation will happen from now on.

raises Invalid_argument

if the argument is < 1.

val copy : t -> t

Make a fresh copy of the buffer.

val capacity : t -> int

Length of the inner buffer.

val length : t -> int

Number of elements currently stored in the buffer.

val is_full : t -> bool

true if pushing an element would erase another element.

since
1.3
val blit_from : t -> Array.t -> int -> int -> unit

blit_from buf from_buf o len copies the slice o, ... o + len - 1 from an input buffer from_buf to the end of the buffer. If the slice is too large for the buffer, only the last part of the array will be copied.

raises Invalid_argument

if o,len is not a valid slice of s.

val blit_into : t -> Array.t -> int -> int -> int

blit_into buf to_buf o len copies at most len elements from buf into to_buf starting at offset o in s.

returns

the number of elements actually copied (min len (length buf)).

raises Invalid_argument

if o,len is not a valid slice of s.

val append : t -> into:t -> unit

append b ~into copies all data from b and adds it at the end of into. Erases data of into if there is not enough room.

val to_list : t -> Array.elt list

Extract the current content into a list.

val clear : t -> unit

Clear the content of the buffer

val is_empty : t -> bool

Is the buffer empty (i.e. contains no elements)?

val junk_front : t -> unit

Drop the front element from t.

raises Empty

if the buffer is already empty.

val junk_back : t -> unit

Drop the back element from t.

raises Empty

if the buffer is already empty.

val skip : t -> int -> unit

skip b len removes len elements from the front of b.

raises Invalid_argument

if len > length b.

val iter : t -> f:(Array.elt -> unit) -> unit

iter b ~f calls f i t for each element t in buf.

val iteri : t -> f:(int -> Array.elt -> unit) -> unit

iteri b ~f calls f i t for each element t in buf, with i being its relative index within buf.

val get_front : t -> int -> Array.elt

get_front buf i returns the i-th element of buf from the front, i.e. the one returned by take_front buf after i-1 calls to junk_front buf.

raises Invalid_argument

if the index is invalid (> length buf).

val get_back : t -> int -> Array.elt

get_back buf i returns the i-th element of buf from the back, i.e. the one returned by take_back buf after i-1 calls to junk_back buf.

raises Invalid_argument

if the index is invalid (> length buf).

val push_back : t -> Array.elt -> unit

Push value at the back of t. If t.bounded=false, the buffer will grow as needed, otherwise the oldest elements are replaced first.

val peek_front : t -> Array.elt option

First value from front of t, without modification.

val peek_front_exn : t -> Array.elt

First value from front of t, without modification.

raises Empty

if buffer is empty.

since
1.3
val peek_back : t -> Array.elt option

Get the last value from back of t, without modification.

val peek_back_exn : t -> Array.elt

Get the last value from back of t, without modification.

raises Empty

if buffer is empty.

since
1.3
val take_back : t -> Array.elt option

Take and remove the last value from back of t, if any.

val take_back_exn : t -> Array.elt

Take and remove the last value from back of t.

raises Empty

if buffer is already empty.

val take_front : t -> Array.elt option

Take and remove the first value from front of t, if any.

val take_front_exn : t -> Array.elt

Take and remove the first value from front of t.

raises Empty

if buffer is already empty.

val of_array : Array.t -> t

Create a buffer from an initial array, but doesn't take ownership of it (still allocates a new internal array).

since
0.11
val to_array : t -> Array.t

Create an array from the elements, in order.

since
0.11
\ No newline at end of file diff --git a/dev/containers/CCRingBuffer/index.html b/dev/containers/CCRingBuffer/index.html new file mode 100644 index 00000000..253aae02 --- /dev/null +++ b/dev/containers/CCRingBuffer/index.html @@ -0,0 +1,2 @@ + +CCRingBuffer (containers.CCRingBuffer)

Module CCRingBuffer

Circular Buffer (Deque)

Useful for IO, or as a bounded-size alternative to Queue when batch operations are needed.

status: experimental

Change in the API to provide only a bounded buffer since 1.3

since
0.9

Underlying Array

module Array : sig ... end

The abstract type for arrays

module type S = sig ... end
module Byte : S with module Array = Array.Byte

An efficient byte based ring buffer

module MakeFromArray : functor (A : Array.S) -> S with module Array = A

Makes a ring buffer module with the given array type

module Make : functor (X : sig ... end) -> S with type Array.elt = X.t and type Array.t = X.t array

Buffer using regular arrays

\ No newline at end of file diff --git a/dev/containers/CCRingBuffer/module-type-S/Array/index.html b/dev/containers/CCRingBuffer/module-type-S/Array/index.html new file mode 100644 index 00000000..91eba1b8 --- /dev/null +++ b/dev/containers/CCRingBuffer/module-type-S/Array/index.html @@ -0,0 +1,2 @@ + +Array (containers.CCRingBuffer.S.Array)

Module S.Array

The module type of Array for this ring buffer

type elt

The element type

type t

The type of an array instance

val dummy : elt

A dummy element used for empty slots in the array

since
2.4
val create : int -> t

Make an array of the given size, filled with dummy elements.

val length : t -> int

length t gets the total number of elements currently in t.

val get : t -> int -> elt

get t i gets the element at position i.

val set : t -> int -> elt -> unit

set t i e sets the element at position i to e.

val sub : t -> int -> int -> t

sub t i len gets the sub-array of t from position i to i + len.

val copy : t -> t

copy t makes a fresh copy of the array t.

val blit : t -> int -> t -> int -> int -> unit

blit t s arr i len copies len elements from arr starting at i to position s from t.

val iter : (elt -> unit) -> t -> unit

iter f t iterates over the array t invoking f with the current element, in array order.

\ No newline at end of file diff --git a/dev/containers/CCRingBuffer/module-type-S/index.html b/dev/containers/CCRingBuffer/module-type-S/index.html new file mode 100644 index 00000000..0cf0a08e --- /dev/null +++ b/dev/containers/CCRingBuffer/module-type-S/index.html @@ -0,0 +1,2 @@ + +S (containers.CCRingBuffer.S)

Module type CCRingBuffer.S

Ring Buffer

The abstract ring buffer type, made concrete by choice of ARRAY module implementation

module Array : Array.S

The module type of Array for this ring buffer

type t

Defines the bounded ring buffer type

exception Empty

Raised in querying functions when the buffer is empty

val create : int -> t

create size creates a new bounded buffer with given size. The underlying array is allocated immediately and no further (large) allocation will happen from now on.

raises Invalid_argument

if the argument is < 1.

val copy : t -> t

Make a fresh copy of the buffer.

val capacity : t -> int

Length of the inner buffer.

val length : t -> int

Number of elements currently stored in the buffer.

val is_full : t -> bool

true if pushing an element would erase another element.

since
1.3
val blit_from : t -> Array.t -> int -> int -> unit

blit_from buf from_buf o len copies the slice o, ... o + len - 1 from an input buffer from_buf to the end of the buffer. If the slice is too large for the buffer, only the last part of the array will be copied.

raises Invalid_argument

if o,len is not a valid slice of s.

val blit_into : t -> Array.t -> int -> int -> int

blit_into buf to_buf o len copies at most len elements from buf into to_buf starting at offset o in s.

returns

the number of elements actually copied (min len (length buf)).

raises Invalid_argument

if o,len is not a valid slice of s.

val append : t -> into:t -> unit

append b ~into copies all data from b and adds it at the end of into. Erases data of into if there is not enough room.

val to_list : t -> Array.elt list

Extract the current content into a list.

val clear : t -> unit

Clear the content of the buffer

val is_empty : t -> bool

Is the buffer empty (i.e. contains no elements)?

val junk_front : t -> unit

Drop the front element from t.

raises Empty

if the buffer is already empty.

val junk_back : t -> unit

Drop the back element from t.

raises Empty

if the buffer is already empty.

val skip : t -> int -> unit

skip b len removes len elements from the front of b.

raises Invalid_argument

if len > length b.

val iter : t -> f:(Array.elt -> unit) -> unit

iter b ~f calls f i t for each element t in buf.

val iteri : t -> f:(int -> Array.elt -> unit) -> unit

iteri b ~f calls f i t for each element t in buf, with i being its relative index within buf.

val get_front : t -> int -> Array.elt

get_front buf i returns the i-th element of buf from the front, i.e. the one returned by take_front buf after i-1 calls to junk_front buf.

raises Invalid_argument

if the index is invalid (> length buf).

val get_back : t -> int -> Array.elt

get_back buf i returns the i-th element of buf from the back, i.e. the one returned by take_back buf after i-1 calls to junk_back buf.

raises Invalid_argument

if the index is invalid (> length buf).

val push_back : t -> Array.elt -> unit

Push value at the back of t. If t.bounded=false, the buffer will grow as needed, otherwise the oldest elements are replaced first.

val peek_front : t -> Array.elt option

First value from front of t, without modification.

val peek_front_exn : t -> Array.elt

First value from front of t, without modification.

raises Empty

if buffer is empty.

since
1.3
val peek_back : t -> Array.elt option

Get the last value from back of t, without modification.

val peek_back_exn : t -> Array.elt

Get the last value from back of t, without modification.

raises Empty

if buffer is empty.

since
1.3
val take_back : t -> Array.elt option

Take and remove the last value from back of t, if any.

val take_back_exn : t -> Array.elt

Take and remove the last value from back of t.

raises Empty

if buffer is already empty.

val take_front : t -> Array.elt option

Take and remove the first value from front of t, if any.

val take_front_exn : t -> Array.elt

Take and remove the first value from front of t.

raises Empty

if buffer is already empty.

val of_array : Array.t -> t

Create a buffer from an initial array, but doesn't take ownership of it (still allocates a new internal array).

since
0.11
val to_array : t -> Array.t

Create an array from the elements, in order.

since
0.11
\ No newline at end of file diff --git a/dev/containers/CCNativeint/.jbuilder-keep b/dev/containers/CCSemaphore/.dune-keep similarity index 100% rename from dev/containers/CCNativeint/.jbuilder-keep rename to dev/containers/CCSemaphore/.dune-keep diff --git a/dev/containers/CCSemaphore/index.html b/dev/containers/CCSemaphore/index.html new file mode 100644 index 00000000..622c8adb --- /dev/null +++ b/dev/containers/CCSemaphore/index.html @@ -0,0 +1,2 @@ + +CCSemaphore (containers.CCSemaphore)

Module CCSemaphore

Semaphores

since
0.13
type t

A semaphore

val create : int -> t

create n creates a semaphore with initial value n.

raises Invalid_argument

if n <= 0.

val get : t -> int

Current value.

val acquire : int -> t -> unit

acquire n s blocks until get s >= n, then atomically sets s := !s - n.

val release : int -> t -> unit

release n s atomically sets s := !s + n.

val with_acquire : n:int -> t -> f:(unit -> 'a) -> 'a

with_acquire ~n s ~f first acquires s with n units, calls f (), and then releases s with n units. Safely release the semaphore even if f () fails.

val wait_until_at_least : n:int -> t -> f:(unit -> 'a) -> 'a

wait_until_at_least ~n s ~f waits until get s >= n, then calls f () and returns its result. Doesn't modify the semaphore.

\ No newline at end of file diff --git a/dev/containers/CCSet.odoc b/dev/containers/CCSet.odoc deleted file mode 100644 index 4336f5da16e2e93f254f5326d674d467c5dbd416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3841 zcmb7HZEO_B8NNNwR2YOyBA|p&dC&K0gYV8XX+Vf{Z3m-9!I)f{idL;z-|gXzcW*Dd zdw^S@iWKEXlb|^wj1p3`2Ad|NO)MgaN-MCErZhoGl#uizrAqqsBPKLRRiXw(ZQq%9 z)-f)!T1$K0*?FGl{g`*YoRU*)@5rvs<{vz8>`WvQNy0&CzZcPgwi|4azHL@TGQeCxj*>G9@$wOaV`_}rMJulz?+LfN3ORYiB z-rc>)sW`UdRtL=@%YWQAkvp{c^zbY0hI8*8e*L8&SktZBmRa!)x1w7;j%(|Fm+qNG zkL8D-eWdAy!gE7+G{1k(z2^>cO9){39u)iius2%{dgx$w^H&s?h^m%N? z5&mi1)~nEaTZld@#9ox(_eJY30!x*qMA@-QfW9k4zYRDjbw;A-$|tPIAn zDvJ>l4>`ADdyV82TVZT`)8_?2mC82w zpIIp({Z5s`K9Hh66rw5k2mzt&a435wZR@+F>}L}HBb0qe%AQ{-At)PdlrT{{L`A`a zq2R?-anNx*gVE@63H&+gjY+)^+7Kb-(h~J+jv}|C+{sYxYSOD(CPWimBXMWLLHlEv z{Xfg>|4#m&lH}-;MA@uBO-2in`)oMl>v8vBB|~0R5!%s3VY>y}3#6^S?B_gbao;p|DPof$_cq=pKMnXeM-!oGvsFk~ zy0HA?X?70Tw}dq+zH`>GT~4Ere}@x5*y@VfgOQ@WHfG?&rk`-n=8z z)QFgE8Y=7wu}@u7jj#dc3wqg5cfgSb%20L6YVZ`}<+~J)AhB$?V+qx98a+d!M}?xY zkQ;z6zoM{^$WUIrrY7eQU-sYP1P4UPa$OP&C8uVV1|MRMv zLr=Mm-nVcVNEvlqp=*S?*_o9G%8hM3P`xTle$%ems$5o7Pxno)JPf;|T7`pwS=4=F zMw&&U$xdORVZJo@5O0zPFv|^h&MwtC!nk=>7$|=T<-^TgEE!ZeCE|HHjK`f(&NIT% zcm4n2;8N4jE5mtJg!8ftXWy*)pCg)%>qhe)M&nBLzl)}FRYY?+jOJ7d<_H}A;B?K_ zb@9WZs;jU!t7X@*Re#V>x5FW}q6YQpBVxeX`FsfXgRF)I#wqEdgmQVRd;#Z|a)S)! ztu!2s&<;$UL_XVb3$m!vEd5)K%x1}Klgvvg-;oa1Gx)0da0^i3lnb-d_k@$&!d-LZg)c8Nv$1ME1ZtF26V?oV z#8qqjz$X`vhSzbRWa!aH(X3pIlpzcmPNY0pV&MvAXKOg*9z!l{jUwTARHI}=8ghix zpx!Fq=SG^Of0pCVao)5j- z`NxFkJ5`?WM&62hhG@vWXPnXqCCAakFGXBr9=0yPsh&aZt{kCsQDT!m1RFNFP(Q*Z zo+tA -CCSet (containers.CCSet)

Module CCSet

Wrapper around Set

since
0.9
type 'a sequence = ('a -> unit) -> unit
type 'a printer = Format.formatter -> 'a -> unit
module type OrderedType = Set.OrderedType
module type S = sig ... end
module Make : functor (O : Set.OrderedType) -> S with type Make.t = Set.Make(O).t and type Make.elt = O.t
\ No newline at end of file +CCSet (containers.CCSet)

Module CCSet

Wrapper around Set

since
0.9
type 'a sequence = ('a -> unit) -> unit
type 'a printer = Format.formatter -> 'a -> unit
module type OrderedType = Set.OrderedType
module type S = sig ... end
module Make : functor (O : Set.OrderedType) -> S with type Make.t = Set.Make(O).t and type Make.elt = O.t
\ No newline at end of file diff --git a/dev/containers/CCSet/module-type-S/index.html b/dev/containers/CCSet/module-type-S/index.html index 3b6449f1..da58c134 100644 --- a/dev/containers/CCSet/module-type-S/index.html +++ b/dev/containers/CCSet/module-type-S/index.html @@ -1,2 +1,2 @@ -S (containers.CCSet.S)

Module type CCSet.S

include Set.S
type elt
type t
val empty : t
val is_empty : t -> bool
val mem : elt -> t -> bool
val add : elt -> t -> t
val singleton : elt -> t
val remove : elt -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val iter : (elt -> unit) -> t -> unit
val map : (elt -> elt) -> t -> t
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val filter : (elt -> bool) -> t -> t
val partition : (elt -> bool) -> t -> t * t
val cardinal : t -> int
val elements : t -> elt list
val min_elt : t -> elt
val min_elt_opt : t -> elt option
val max_elt : t -> elt
val max_elt_opt : t -> elt option
val choose : t -> elt
val choose_opt : t -> elt option
val split : elt -> t -> t * bool * t
val find : elt -> t -> elt
val find_opt : elt -> t -> elt option
val find_first : (elt -> bool) -> t -> elt
val find_first_opt : (elt -> bool) -> t -> elt option
val find_last : (elt -> bool) -> t -> elt
val find_last_opt : (elt -> bool) -> t -> elt option
val of_list : elt list -> t
val min_elt_opt : t -> elt option

Safe version of min_elt.

since
1.5
val max_elt_opt : t -> elt option

Safe version of max_elt.

since
1.5
val choose_opt : t -> elt option

Safe version of choose.

since
1.5
val find_opt : elt -> t -> elt option

Safe version of find.

since
1.5
val find_first : (elt -> bool) -> t -> elt

Find minimum element satisfying predicate.

since
1.5
val find_first_opt : (elt -> bool) -> t -> elt option

Safe version of find_first.

since
1.5
val find_last : (elt -> bool) -> t -> elt

Find maximum element satisfying predicate.

since
1.5
val find_last_opt : (elt -> bool) -> t -> elt option

Safe version of find_last.

since
1.5
val of_seq : elt sequence -> t

Build a set from the given sequence of elements.

val add_seq : t -> elt sequence -> t
since
0.14
val to_seq : t -> elt sequence

to_seq t converts the set t to a sequence of the elements.

val of_list : elt list -> t

Build a set from the given list of elements, added in order using add.

val add_list : t -> elt list -> t
since
0.14
val to_list : t -> elt list

to_list t converts the set t to a list of the elements.

val pp : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> elt printer -> t printer

Print the set.

\ No newline at end of file +S (containers.CCSet.S)

Module type CCSet.S

include Set.S
type elt
type t
val empty : t
val is_empty : t -> bool
val mem : elt -> t -> bool
val add : elt -> t -> t
val singleton : elt -> t
val remove : elt -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val iter : (elt -> unit) -> t -> unit
val map : (elt -> elt) -> t -> t
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val filter : (elt -> bool) -> t -> t
val partition : (elt -> bool) -> t -> t * t
val cardinal : t -> int
val elements : t -> elt list
val min_elt : t -> elt
val min_elt_opt : t -> elt option
val max_elt : t -> elt
val max_elt_opt : t -> elt option
val choose : t -> elt
val choose_opt : t -> elt option
val split : elt -> t -> t * bool * t
val find : elt -> t -> elt
val find_opt : elt -> t -> elt option
val find_first : (elt -> bool) -> t -> elt
val find_first_opt : (elt -> bool) -> t -> elt option
val find_last : (elt -> bool) -> t -> elt
val find_last_opt : (elt -> bool) -> t -> elt option
val of_list : elt list -> t
val min_elt_opt : t -> elt option

Safe version of min_elt.

since
1.5
val max_elt_opt : t -> elt option

Safe version of max_elt.

since
1.5
val choose_opt : t -> elt option

Safe version of choose.

since
1.5
val find_opt : elt -> t -> elt option

Safe version of find.

since
1.5
val find_first : (elt -> bool) -> t -> elt

Find minimum element satisfying predicate.

since
1.5
val find_first_opt : (elt -> bool) -> t -> elt option

Safe version of find_first.

since
1.5
val find_last : (elt -> bool) -> t -> elt

Find maximum element satisfying predicate.

since
1.5
val find_last_opt : (elt -> bool) -> t -> elt option

Safe version of find_last.

since
1.5
val of_seq : elt sequence -> t

Build a set from the given sequence of elements.

val add_seq : t -> elt sequence -> t
since
0.14
val to_seq : t -> elt sequence

to_seq t converts the set t to a sequence of the elements.

val of_list : elt list -> t

Build a set from the given list of elements, added in order using add.

val add_list : t -> elt list -> t
since
0.14
val to_list : t -> elt list

to_list t converts the set t to a list of the elements.

val to_string : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> (elt -> string) -> t -> string

Print the set in a string

since
NEXT_RELEASE
val pp : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> elt printer -> t printer

Print the set.

\ No newline at end of file diff --git a/dev/containers/CCOrd/.jbuilder-keep b/dev/containers/CCSexp/.dune-keep similarity index 100% rename from dev/containers/CCOrd/.jbuilder-keep rename to dev/containers/CCSexp/.dune-keep diff --git a/dev/containers/CCSexp/Decoder/index.html b/dev/containers/CCSexp/Decoder/index.html new file mode 100644 index 00000000..144dc5a7 --- /dev/null +++ b/dev/containers/CCSexp/Decoder/index.html @@ -0,0 +1,2 @@ + +Decoder (containers.CCSexp.Decoder)

Module CCSexp.Decoder

type t

Decoder

val of_lexbuf : Lexing.lexbuf -> t
val next : t -> sexp parse_result

Parse the next S-expression or return an error if the input isn't long enough or isn't a proper S-expression.

\ No newline at end of file diff --git a/dev/containers/CCSexp/Make/Decoder/index.html b/dev/containers/CCSexp/Make/Decoder/index.html new file mode 100644 index 00000000..038eb08a --- /dev/null +++ b/dev/containers/CCSexp/Make/Decoder/index.html @@ -0,0 +1,2 @@ + +Decoder (containers.CCSexp.Make.Decoder)

Module Make.Decoder

type t

Decoder

val of_lexbuf : Lexing.lexbuf -> t
val next : t -> sexp parse_result

Parse the next S-expression or return an error if the input isn't long enough or isn't a proper S-expression.

\ No newline at end of file diff --git a/dev/containers/CCSexp/Make/argument-1-Sexp/index.html b/dev/containers/CCSexp/Make/argument-1-Sexp/index.html new file mode 100644 index 00000000..420cbc4c --- /dev/null +++ b/dev/containers/CCSexp/Make/argument-1-Sexp/index.html @@ -0,0 +1,2 @@ + +1-Sexp (containers.CCSexp.Make.1-Sexp)

Parameter Make.1-Sexp

type t
type loc
val make_loc : ((int * int) -> (int * int) -> string -> loc) option

If provided, builds a location from a pair of (line,column) positions, and a (possibly dummy) filename

val atom_with_loc : loc:loc -> string -> t
val list_with_loc : loc:loc -> t list -> t
val atom : string -> t
val list : t list -> t
val match_ : t -> atom:(string -> 'a) -> list:(t list -> 'a) -> 'a
\ No newline at end of file diff --git a/dev/containers/CCSexp/Make/index.html b/dev/containers/CCSexp/Make/index.html new file mode 100644 index 00000000..af760d04 --- /dev/null +++ b/dev/containers/CCSexp/Make/index.html @@ -0,0 +1,2 @@ + +Make (containers.CCSexp.Make)

Module CCSexp.Make

Functorized operations

This builds a parser and printer for S-expressions represented as in the Sexp argument.

since
NEXT_RELEASE

Parameters

Signature

type t = Sexp.t
type sexp = t
val of_int : int -> t
val of_bool : bool -> t
val of_list : t list -> t
val of_rev_list : t list -> t

Reverse the list.

val of_float : float -> t

Reverse the list.

val of_unit : t
val of_pair : (t * t) -> t
val of_triple : (t * t * t) -> t
val of_quad : (t * t * t * t) -> t
val of_variant : string -> t list -> t

of_variant name args is used to encode algebraic variants into a S-expr. For instance of_variant "some" [of_int 1] represents the value Some 1.

val of_field : string -> t -> t

Used to represent one record field.

val of_record : (string * t) list -> t

Represent a record by its named fields.

Printing

val to_buf : Buffer.t -> t -> unit
val to_string : t -> string
val to_file : string -> t -> unit
val to_file_seq : string -> t CCSexp_intf.sequence -> unit

Print the given sequence of expressions to a file.

val to_chan : Pervasives.out_channel -> t -> unit
val pp : Format.formatter -> t -> unit

Pretty-printer nice on human eyes (including indentation).

val pp_noindent : Format.formatter -> t -> unit

Raw, direct printing as compact as possible.

Parsing

type 'a parse_result =
| Yield of 'a
| Fail of string
| End

A parser of 'a can return Yield x when it parsed a value, or Fail e when a parse error was encountered, or End if the input was empty.

module Decoder : sig ... end
val parse_string : string -> t CCSexp_intf.or_error

Parse a string.

val parse_chan : Pervasives.in_channel -> t CCSexp_intf.or_error

Parse a S-expression from the given channel. Can read more data than necessary, so don't use this if you need finer-grained control (e.g. to read something else after the S-exp).

val parse_chan_gen : Pervasives.in_channel -> t CCSexp_intf.or_error CCSexp_intf.gen

Parse a channel into a generator of S-expressions.

val parse_chan_list : Pervasives.in_channel -> t list CCSexp_intf.or_error
val parse_file : string -> t CCSexp_intf.or_error

Open the file and read a S-exp from it.

val parse_file_list : string -> t list CCSexp_intf.or_error

Open the file and read a S-exp from it.

\ No newline at end of file diff --git a/dev/containers/CCSexp/index.html b/dev/containers/CCSexp/index.html new file mode 100644 index 00000000..04a0fbc5 --- /dev/null +++ b/dev/containers/CCSexp/index.html @@ -0,0 +1,2 @@ + +CCSexp (containers.CCSexp)

Module CCSexp

Handling S-expressions

type 'a or_error = ('a, string) Result.result
type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
module type SEXP = CCSexp_intf.SEXP
module type S = CCSexp_intf.S
module Make : functor (Sexp : SEXP) -> S with type t = Sexp.t

Basics

type t = [
| `Atom of string
| `List of t list
]

A simple, structural representation of S-expressions.

include S with type S.t := t
type t
type sexp = t
val of_int : int -> t
val of_bool : bool -> t
val of_list : t list -> t
val of_rev_list : t list -> t

Reverse the list.

val of_float : float -> t

Reverse the list.

val of_unit : t
val of_pair : (t * t) -> t
val of_triple : (t * t * t) -> t
val of_quad : (t * t * t * t) -> t
val of_variant : string -> t list -> t

of_variant name args is used to encode algebraic variants into a S-expr. For instance of_variant "some" [of_int 1] represents the value Some 1.

val of_field : string -> t -> t

Used to represent one record field.

val of_record : (string * t) list -> t

Represent a record by its named fields.

Printing

val to_buf : Buffer.t -> t -> unit
val to_string : t -> string
val to_file : string -> t -> unit
val to_file_seq : string -> t CCSexp_intf.sequence -> unit

Print the given sequence of expressions to a file.

val to_chan : Pervasives.out_channel -> t -> unit
val pp : Format.formatter -> t -> unit

Pretty-printer nice on human eyes (including indentation).

val pp_noindent : Format.formatter -> t -> unit

Raw, direct printing as compact as possible.

Parsing

type 'a parse_result =
| Yield of 'a
| Fail of string
| End

A parser of 'a can return Yield x when it parsed a value, or Fail e when a parse error was encountered, or End if the input was empty.

module Decoder : sig ... end
val parse_string : string -> t CCSexp_intf.or_error

Parse a string.

val parse_chan : Pervasives.in_channel -> t CCSexp_intf.or_error

Parse a S-expression from the given channel. Can read more data than necessary, so don't use this if you need finer-grained control (e.g. to read something else after the S-exp).

val parse_chan_gen : Pervasives.in_channel -> t CCSexp_intf.or_error CCSexp_intf.gen

Parse a channel into a generator of S-expressions.

val parse_chan_list : Pervasives.in_channel -> t list CCSexp_intf.or_error
val parse_file : string -> t CCSexp_intf.or_error

Open the file and read a S-exp from it.

val parse_file_list : string -> t list CCSexp_intf.or_error

Open the file and read a S-exp from it.

\ No newline at end of file diff --git a/dev/containers/CCSexp/module-type-S/Decoder/index.html b/dev/containers/CCSexp/module-type-S/Decoder/index.html new file mode 100644 index 00000000..e796df77 --- /dev/null +++ b/dev/containers/CCSexp/module-type-S/Decoder/index.html @@ -0,0 +1,2 @@ + +Decoder (containers.CCSexp.S.Decoder)

Module S.Decoder

type t

Decoder

val of_lexbuf : Lexing.lexbuf -> t
val next : t -> sexp parse_result

Parse the next S-expression or return an error if the input isn't long enough or isn't a proper S-expression.

\ No newline at end of file diff --git a/dev/containers/CCSexp/module-type-S/index.html b/dev/containers/CCSexp/module-type-S/index.html new file mode 100644 index 00000000..fa64027b --- /dev/null +++ b/dev/containers/CCSexp/module-type-S/index.html @@ -0,0 +1,2 @@ + +S (containers.CCSexp.S)

Module type CCSexp.S

Operations over S-expressions

since
NEXT_RELEASE
type t
type sexp = t
val of_int : int -> t
val of_bool : bool -> t
val of_list : t list -> t
val of_rev_list : t list -> t

Reverse the list.

val of_float : float -> t

Reverse the list.

val of_unit : t
val of_pair : (t * t) -> t
val of_triple : (t * t * t) -> t
val of_quad : (t * t * t * t) -> t
val of_variant : string -> t list -> t

of_variant name args is used to encode algebraic variants into a S-expr. For instance of_variant "some" [of_int 1] represents the value Some 1.

val of_field : string -> t -> t

Used to represent one record field.

val of_record : (string * t) list -> t

Represent a record by its named fields.

Printing

val to_buf : Buffer.t -> t -> unit
val to_string : t -> string
val to_file : string -> t -> unit
val to_file_seq : string -> t CCSexp_intf.sequence -> unit

Print the given sequence of expressions to a file.

val to_chan : Pervasives.out_channel -> t -> unit
val pp : Format.formatter -> t -> unit

Pretty-printer nice on human eyes (including indentation).

val pp_noindent : Format.formatter -> t -> unit

Raw, direct printing as compact as possible.

Parsing

type 'a parse_result =
| Yield of 'a
| Fail of string
| End

A parser of 'a can return Yield x when it parsed a value, or Fail e when a parse error was encountered, or End if the input was empty.

module Decoder : sig ... end
val parse_string : string -> t CCSexp_intf.or_error

Parse a string.

val parse_chan : Pervasives.in_channel -> t CCSexp_intf.or_error

Parse a S-expression from the given channel. Can read more data than necessary, so don't use this if you need finer-grained control (e.g. to read something else after the S-exp).

val parse_chan_gen : Pervasives.in_channel -> t CCSexp_intf.or_error CCSexp_intf.gen

Parse a channel into a generator of S-expressions.

val parse_chan_list : Pervasives.in_channel -> t list CCSexp_intf.or_error
val parse_file : string -> t CCSexp_intf.or_error

Open the file and read a S-exp from it.

val parse_file_list : string -> t list CCSexp_intf.or_error

Open the file and read a S-exp from it.

\ No newline at end of file diff --git a/dev/containers/CCSexp/module-type-SEXP/index.html b/dev/containers/CCSexp/module-type-SEXP/index.html new file mode 100644 index 00000000..71338743 --- /dev/null +++ b/dev/containers/CCSexp/module-type-SEXP/index.html @@ -0,0 +1,2 @@ + +SEXP (containers.CCSexp.SEXP)

Module type CCSexp.SEXP

Abstract representation of S-expressions

since
NEXT_RELEASE
type t
type loc
val make_loc : ((int * int) -> (int * int) -> string -> loc) option

If provided, builds a location from a pair of (line,column) positions, and a (possibly dummy) filename

val atom_with_loc : loc:loc -> string -> t
val list_with_loc : loc:loc -> t list -> t
val atom : string -> t
val list : t list -> t
val match_ : t -> atom:(string -> 'a) -> list:(t list -> 'a) -> 'a
\ No newline at end of file diff --git a/dev/containers/CCPair/.jbuilder-keep b/dev/containers/CCSexp_intf/.dune-keep similarity index 100% rename from dev/containers/CCPair/.jbuilder-keep rename to dev/containers/CCSexp_intf/.dune-keep diff --git a/dev/containers/CCSexp_intf/index.html b/dev/containers/CCSexp_intf/index.html new file mode 100644 index 00000000..39d3639a --- /dev/null +++ b/dev/containers/CCSexp_intf/index.html @@ -0,0 +1,2 @@ + +CCSexp_intf (containers.CCSexp_intf)

Module CCSexp_intf

type 'a or_error = ('a, string) Result.result
type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
module type SEXP = sig ... end
module type S = sig ... end
\ No newline at end of file diff --git a/dev/containers/CCSexp_intf/module-type-S/Decoder/index.html b/dev/containers/CCSexp_intf/module-type-S/Decoder/index.html new file mode 100644 index 00000000..2f4aef15 --- /dev/null +++ b/dev/containers/CCSexp_intf/module-type-S/Decoder/index.html @@ -0,0 +1,2 @@ + +Decoder (containers.CCSexp_intf.S.Decoder)

Module S.Decoder

type t

Decoder

val of_lexbuf : Lexing.lexbuf -> t
val next : t -> sexp parse_result

Parse the next S-expression or return an error if the input isn't long enough or isn't a proper S-expression.

\ No newline at end of file diff --git a/dev/containers/CCSexp_intf/module-type-S/index.html b/dev/containers/CCSexp_intf/module-type-S/index.html new file mode 100644 index 00000000..dc1b559c --- /dev/null +++ b/dev/containers/CCSexp_intf/module-type-S/index.html @@ -0,0 +1,2 @@ + +S (containers.CCSexp_intf.S)

Module type CCSexp_intf.S

Operations over S-expressions

since
NEXT_RELEASE
type t
type sexp = t
val of_int : int -> t
val of_bool : bool -> t
val of_list : t list -> t
val of_rev_list : t list -> t

Reverse the list.

val of_float : float -> t

Reverse the list.

val of_unit : t
val of_pair : (t * t) -> t
val of_triple : (t * t * t) -> t
val of_quad : (t * t * t * t) -> t
val of_variant : string -> t list -> t

of_variant name args is used to encode algebraic variants into a S-expr. For instance of_variant "some" [of_int 1] represents the value Some 1.

val of_field : string -> t -> t

Used to represent one record field.

val of_record : (string * t) list -> t

Represent a record by its named fields.

Printing

val to_buf : Buffer.t -> t -> unit
val to_string : t -> string
val to_file : string -> t -> unit
val to_file_seq : string -> t sequence -> unit

Print the given sequence of expressions to a file.

val to_chan : Pervasives.out_channel -> t -> unit
val pp : Format.formatter -> t -> unit

Pretty-printer nice on human eyes (including indentation).

val pp_noindent : Format.formatter -> t -> unit

Raw, direct printing as compact as possible.

Parsing

type 'a parse_result =
| Yield of 'a
| Fail of string
| End

A parser of 'a can return Yield x when it parsed a value, or Fail e when a parse error was encountered, or End if the input was empty.

module Decoder : sig ... end
val parse_string : string -> t or_error

Parse a string.

val parse_chan : Pervasives.in_channel -> t or_error

Parse a S-expression from the given channel. Can read more data than necessary, so don't use this if you need finer-grained control (e.g. to read something else after the S-exp).

val parse_chan_gen : Pervasives.in_channel -> t or_error gen

Parse a channel into a generator of S-expressions.

val parse_chan_list : Pervasives.in_channel -> t list or_error
val parse_file : string -> t or_error

Open the file and read a S-exp from it.

val parse_file_list : string -> t list or_error

Open the file and read a S-exp from it.

\ No newline at end of file diff --git a/dev/containers/CCSexp_intf/module-type-SEXP/index.html b/dev/containers/CCSexp_intf/module-type-SEXP/index.html new file mode 100644 index 00000000..baae399b --- /dev/null +++ b/dev/containers/CCSexp_intf/module-type-SEXP/index.html @@ -0,0 +1,2 @@ + +SEXP (containers.CCSexp_intf.SEXP)

Module type CCSexp_intf.SEXP

Abstract representation of S-expressions

since
NEXT_RELEASE
type t
type loc
val make_loc : ((int * int) -> (int * int) -> string -> loc) option

If provided, builds a location from a pair of (line,column) positions, and a (possibly dummy) filename

val atom_with_loc : loc:loc -> string -> t
val list_with_loc : loc:loc -> t list -> t
val atom : string -> t
val list : t list -> t
val match_ : t -> atom:(string -> 'a) -> list:(t list -> 'a) -> 'a
\ No newline at end of file diff --git a/dev/containers/CCParse/.jbuilder-keep b/dev/containers/CCSexp_lex/.dune-keep similarity index 100% rename from dev/containers/CCParse/.jbuilder-keep rename to dev/containers/CCSexp_lex/.dune-keep diff --git a/dev/containers/CCSexp_lex/index.html b/dev/containers/CCSexp_lex/index.html new file mode 100644 index 00000000..fc77f51f --- /dev/null +++ b/dev/containers/CCSexp_lex/index.html @@ -0,0 +1,2 @@ + +CCSexp_lex (containers.CCSexp_lex)

Module CCSexp_lex

type token =
| ATOM of string
| LIST_OPEN
| LIST_CLOSE
| SEXP_COMMENT
| EOI
exception Error of int * int * string
val error : Lexing.lexbuf -> string -> 'a
type unescape_state =
| Not_escaped
| Escaped
| Escaped_int_1 of int
| Escaped_int_2 of int
val char_equal : char -> char -> bool
val remove_quotes : Lexing.lexbuf -> string -> string
val __ocaml_lex_tables : Lexing.lex_tables
val token : Lexing.lexbuf -> token
val __ocaml_lex_token_rec : Lexing.lexbuf -> int -> token
\ No newline at end of file diff --git a/dev/containers/CCRandom/.jbuilder-keep b/dev/containers/CCShimsArray_/.dune-keep similarity index 100% rename from dev/containers/CCRandom/.jbuilder-keep rename to dev/containers/CCShimsArray_/.dune-keep diff --git a/dev/containers/CCShimsArray_/index.html b/dev/containers/CCShimsArray_/index.html new file mode 100644 index 00000000..7011f962 --- /dev/null +++ b/dev/containers/CCShimsArray_/index.html @@ -0,0 +1,2 @@ + +CCShimsArray_ (containers.CCShimsArray_)

Module CCShimsArray_

include Array
val length : 'a array -> int
val get : 'a array -> int -> 'a
val set : 'a array -> int -> 'a -> unit
val make : int -> 'a -> 'a array
val create : int -> 'a -> 'a array
val create_float : int -> float array
val make_float : int -> float array
val init : int -> (int -> 'a) -> 'a array
val make_matrix : int -> int -> 'a -> 'a array array
val create_matrix : int -> int -> 'a -> 'a array array
val append : 'a array -> 'a array -> 'a array
val concat : 'a array list -> 'a array
val sub : 'a array -> int -> int -> 'a array
val copy : 'a array -> 'a array
val fill : 'a array -> int -> int -> 'a -> unit
val blit : 'a array -> int -> 'a array -> int -> int -> unit
val to_list : 'a array -> 'a list
val of_list : 'a list -> 'a array
val iter : ('a -> unit) -> 'a array -> unit
val iteri : (int -> 'a -> unit) -> 'a array -> unit
val map : ('a -> 'b) -> 'a array -> 'b array
val mapi : (int -> 'a -> 'b) -> 'a array -> 'b array
val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b array -> 'a
val fold_right : ('b -> 'a -> 'a) -> 'b array -> 'a -> 'a
val iter2 : ('a -> 'b -> unit) -> 'a array -> 'b array -> unit
val map2 : ('a -> 'b -> 'c) -> 'a array -> 'b array -> 'c array
val for_all : ('a -> bool) -> 'a array -> bool
val exists : ('a -> bool) -> 'a array -> bool
val mem : 'a -> 'a array -> bool
val memq : 'a -> 'a array -> bool
val sort : ('a -> 'a -> int) -> 'a array -> unit
val stable_sort : ('a -> 'a -> int) -> 'a array -> unit
val fast_sort : ('a -> 'a -> int) -> 'a array -> unit
val unsafe_get : 'a array -> int -> 'a
val unsafe_set : 'a array -> int -> 'a -> unit
module Floatarray = Array.Floatarray
type 'a t = 'a array
\ No newline at end of file diff --git a/dev/containers/CCRef/.jbuilder-keep b/dev/containers/CCShimsFormat_/.dune-keep similarity index 100% rename from dev/containers/CCRef/.jbuilder-keep rename to dev/containers/CCShimsFormat_/.dune-keep diff --git a/dev/containers/CCShimsFormat_/index.html b/dev/containers/CCShimsFormat_/index.html new file mode 100644 index 00000000..8af8af22 --- /dev/null +++ b/dev/containers/CCShimsFormat_/index.html @@ -0,0 +1,2 @@ + +CCShimsFormat_ (containers.CCShimsFormat_)

Module CCShimsFormat_

include Format
type formatter = Format.formatter
val pp_open_box : formatter -> int -> unit
val open_box : int -> unit
val pp_close_box : formatter -> unit -> unit
val close_box : unit -> unit
val pp_open_hbox : formatter -> unit -> unit
val open_hbox : unit -> unit
val pp_open_vbox : formatter -> int -> unit
val open_vbox : int -> unit
val pp_open_hvbox : formatter -> int -> unit
val open_hvbox : int -> unit
val pp_open_hovbox : formatter -> int -> unit
val open_hovbox : int -> unit
val pp_print_string : formatter -> string -> unit
val print_string : string -> unit
val pp_print_as : formatter -> int -> string -> unit
val print_as : int -> string -> unit
val pp_print_int : formatter -> int -> unit
val print_int : int -> unit
val pp_print_float : formatter -> float -> unit
val print_float : float -> unit
val pp_print_char : formatter -> char -> unit
val print_char : char -> unit
val pp_print_bool : formatter -> bool -> unit
val print_bool : bool -> unit
val pp_print_space : formatter -> unit -> unit
val print_space : unit -> unit
val pp_print_cut : formatter -> unit -> unit
val print_cut : unit -> unit
val pp_print_break : formatter -> int -> int -> unit
val print_break : int -> int -> unit
val pp_force_newline : formatter -> unit -> unit
val force_newline : unit -> unit
val pp_print_if_newline : formatter -> unit -> unit
val print_if_newline : unit -> unit
val pp_print_flush : formatter -> unit -> unit
val print_flush : unit -> unit
val pp_print_newline : formatter -> unit -> unit
val print_newline : unit -> unit
val pp_set_margin : formatter -> int -> unit
val set_margin : int -> unit
val pp_get_margin : formatter -> unit -> int
val get_margin : unit -> int
val pp_set_max_indent : formatter -> int -> unit
val set_max_indent : int -> unit
val pp_get_max_indent : formatter -> unit -> int
val get_max_indent : unit -> int
val pp_set_max_boxes : formatter -> int -> unit
val set_max_boxes : int -> unit
val pp_get_max_boxes : formatter -> unit -> int
val get_max_boxes : unit -> int
val pp_over_max_boxes : formatter -> unit -> bool
val over_max_boxes : unit -> bool
val pp_open_tbox : formatter -> unit -> unit
val open_tbox : unit -> unit
val pp_close_tbox : formatter -> unit -> unit
val close_tbox : unit -> unit
val pp_set_tab : formatter -> unit -> unit
val set_tab : unit -> unit
val pp_print_tab : formatter -> unit -> unit
val print_tab : unit -> unit
val pp_print_tbreak : formatter -> int -> int -> unit
val print_tbreak : int -> int -> unit
val pp_set_ellipsis_text : formatter -> string -> unit
val set_ellipsis_text : string -> unit
val pp_get_ellipsis_text : formatter -> unit -> string
val get_ellipsis_text : unit -> string
type tag = string
val pp_open_tag : formatter -> string -> unit
val open_tag : tag -> unit
val pp_close_tag : formatter -> unit -> unit
val close_tag : unit -> unit
val pp_set_tags : formatter -> bool -> unit
val set_tags : bool -> unit
val pp_set_print_tags : formatter -> bool -> unit
val set_print_tags : bool -> unit
val pp_set_mark_tags : formatter -> bool -> unit
val set_mark_tags : bool -> unit
val pp_get_print_tags : formatter -> unit -> bool
val get_print_tags : unit -> bool
val pp_get_mark_tags : formatter -> unit -> bool
val get_mark_tags : unit -> bool
val pp_set_formatter_out_channel : formatter -> Pervasives.out_channel -> unit
val set_formatter_out_channel : Pervasives.out_channel -> unit
val pp_set_formatter_output_functions : formatter -> (string -> int -> int -> unit) -> (unit -> unit) -> unit
val set_formatter_output_functions : (string -> int -> int -> unit) -> (unit -> unit) -> unit
val pp_get_formatter_output_functions : formatter -> unit -> (string -> int -> int -> unit) * (unit -> unit)
val get_formatter_output_functions : unit -> (string -> int -> int -> unit) * (unit -> unit)
type formatter_out_functions = Format.formatter_out_functions = {
out_string : string -> int -> int -> unit;
out_flush : unit -> unit;
out_newline : unit -> unit;
out_spaces : int -> unit;
out_indent : int -> unit;
}
val pp_set_formatter_out_functions : formatter -> formatter_out_functions -> unit
val set_formatter_out_functions : formatter_out_functions -> unit
val pp_get_formatter_out_functions : formatter -> unit -> formatter_out_functions
val get_formatter_out_functions : unit -> formatter_out_functions
type formatter_tag_functions = Format.formatter_tag_functions = {
mark_open_tag : tag -> string;
mark_close_tag : tag -> string;
print_open_tag : tag -> unit;
print_close_tag : tag -> unit;
}
val pp_set_formatter_tag_functions : formatter -> formatter_tag_functions -> unit
val set_formatter_tag_functions : formatter_tag_functions -> unit
val pp_get_formatter_tag_functions : formatter -> unit -> formatter_tag_functions
val get_formatter_tag_functions : unit -> formatter_tag_functions
val formatter_of_out_channel : Pervasives.out_channel -> formatter
val std_formatter : formatter
val err_formatter : formatter
val formatter_of_buffer : Buffer.t -> formatter
val stdbuf : Buffer.t
val str_formatter : formatter
val flush_str_formatter : unit -> string
val make_formatter : (string -> int -> int -> unit) -> (unit -> unit) -> formatter
val formatter_of_out_functions : formatter_out_functions -> formatter
type symbolic_output_item = Format.symbolic_output_item =
| Output_flush
| Output_newline
| Output_string of string
| Output_spaces of int
| Output_indent of int
type symbolic_output_buffer = Format.symbolic_output_buffer
val make_symbolic_output_buffer : unit -> symbolic_output_buffer
val clear_symbolic_output_buffer : symbolic_output_buffer -> unit
val get_symbolic_output_buffer : symbolic_output_buffer -> symbolic_output_item list
val flush_symbolic_output_buffer : symbolic_output_buffer -> symbolic_output_item list
val add_symbolic_output_item : symbolic_output_buffer -> symbolic_output_item -> unit
val formatter_of_symbolic_output_buffer : symbolic_output_buffer -> formatter
val pp_print_list : ?⁠pp_sep:(formatter -> unit -> unit) -> (formatter -> 'a -> unit) -> formatter -> 'a list -> unit
val pp_print_text : formatter -> string -> unit
val fprintf : formatter -> ('aformatter, unit) Pervasives.format -> 'a
val printf : ('aformatter, unit) Pervasives.format -> 'a
val eprintf : ('aformatter, unit) Pervasives.format -> 'a
val sprintf : ('a, unit, string) Pervasives.format -> 'a
val asprintf : ('aformatter, unit, string) Pervasives.format4 -> 'a
val ifprintf : formatter -> ('aformatter, unit) Pervasives.format -> 'a
val kfprintf : (formatter -> 'a) -> formatter -> ('bformatter, unit, 'a) Pervasives.format4 -> 'b
val ikfprintf : (formatter -> 'a) -> formatter -> ('bformatter, unit, 'a) Pervasives.format4 -> 'b
val ksprintf : (string -> 'a) -> ('b, unit, string, 'a) Pervasives.format4 -> 'b
val kasprintf : (string -> 'a) -> ('bformatter, unit, 'a) Pervasives.format4 -> 'b
val bprintf : Buffer.t -> ('aformatter, unit) Pervasives.format -> 'a
val kprintf : (string -> 'a) -> ('b, unit, string, 'a) Pervasives.format4 -> 'b
val set_all_formatter_output_functions : out:(string -> int -> int -> unit) -> flush:(unit -> unit) -> newline:(unit -> unit) -> spaces:(int -> unit) -> unit
val get_all_formatter_output_functions : unit -> (string -> int -> int -> unit) * (unit -> unit) * (unit -> unit) * (int -> unit)
val pp_set_all_formatter_output_functions : formatter -> out:(string -> int -> int -> unit) -> flush:(unit -> unit) -> newline:(unit -> unit) -> spaces:(int -> unit) -> unit
val pp_get_all_formatter_output_functions : formatter -> unit -> (string -> int -> int -> unit) * (unit -> unit) * (unit -> unit) * (int -> unit)
val cc_update_funs : Format.formatter_tag_functions -> ((Format.tag -> string) -> Format.tag -> string) -> ((Format.tag -> string) -> Format.tag -> string) -> Format.formatter_tag_functions
\ No newline at end of file diff --git a/dev/containers/CCResult/.jbuilder-keep b/dev/containers/CCShimsFun_/.dune-keep similarity index 100% rename from dev/containers/CCResult/.jbuilder-keep rename to dev/containers/CCShimsFun_/.dune-keep diff --git a/dev/containers/CCShimsFun_/index.html b/dev/containers/CCShimsFun_/index.html new file mode 100644 index 00000000..04d60719 --- /dev/null +++ b/dev/containers/CCShimsFun_/index.html @@ -0,0 +1,2 @@ + +CCShimsFun_ (containers.CCShimsFun_)

Module CCShimsFun_

val id : 'a -> 'a

This is an API imitating the new standard Fun module

val flip : ('a -> 'b -> 'c) -> 'b -> 'a -> 'c
val const : 'a -> _ -> 'a
val negate : ('a -> bool) -> 'a -> bool
val protect : finally:(unit -> unit) -> (unit -> 'a) -> 'a
\ No newline at end of file diff --git a/dev/containers/CCSet/.jbuilder-keep b/dev/containers/CCShimsList_/.dune-keep similarity index 100% rename from dev/containers/CCSet/.jbuilder-keep rename to dev/containers/CCShimsList_/.dune-keep diff --git a/dev/containers/CCShimsList_/index.html b/dev/containers/CCShimsList_/index.html new file mode 100644 index 00000000..3a6c7eb0 --- /dev/null +++ b/dev/containers/CCShimsList_/index.html @@ -0,0 +1,2 @@ + +CCShimsList_ (containers.CCShimsList_)

Module CCShimsList_

include List
val length : 'a list -> int
val compare_lengths : 'a list -> 'b list -> int
val compare_length_with : 'a list -> int -> int
val cons : 'a -> 'a list -> 'a list
val hd : 'a list -> 'a
val tl : 'a list -> 'a list
val nth : 'a list -> int -> 'a
val nth_opt : 'a list -> int -> 'a option
val rev : 'a list -> 'a list
val init : int -> (int -> 'a) -> 'a list
val append : 'a list -> 'a list -> 'a list
val rev_append : 'a list -> 'a list -> 'a list
val concat : 'a list list -> 'a list
val flatten : 'a list list -> 'a list
val iter : ('a -> unit) -> 'a list -> unit
val iteri : (int -> 'a -> unit) -> 'a list -> unit
val map : ('a -> 'b) -> 'a list -> 'b list
val mapi : (int -> 'a -> 'b) -> 'a list -> 'b list
val rev_map : ('a -> 'b) -> 'a list -> 'b list
val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a
val fold_right : ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b
val iter2 : ('a -> 'b -> unit) -> 'a list -> 'b list -> unit
val map2 : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list
val rev_map2 : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list
val fold_left2 : ('a -> 'b -> 'c -> 'a) -> 'a -> 'b list -> 'c list -> 'a
val fold_right2 : ('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> 'c -> 'c
val for_all : ('a -> bool) -> 'a list -> bool
val exists : ('a -> bool) -> 'a list -> bool
val for_all2 : ('a -> 'b -> bool) -> 'a list -> 'b list -> bool
val exists2 : ('a -> 'b -> bool) -> 'a list -> 'b list -> bool
val mem : 'a -> 'a list -> bool
val memq : 'a -> 'a list -> bool
val find : ('a -> bool) -> 'a list -> 'a
val find_opt : ('a -> bool) -> 'a list -> 'a option
val filter : ('a -> bool) -> 'a list -> 'a list
val find_all : ('a -> bool) -> 'a list -> 'a list
val partition : ('a -> bool) -> 'a list -> 'a list * 'a list
val assoc : 'a -> ('a * 'b) list -> 'b
val assoc_opt : 'a -> ('a * 'b) list -> 'b option
val assq : 'a -> ('a * 'b) list -> 'b
val assq_opt : 'a -> ('a * 'b) list -> 'b option
val mem_assoc : 'a -> ('a * 'b) list -> bool
val mem_assq : 'a -> ('a * 'b) list -> bool
val remove_assoc : 'a -> ('a * 'b) list -> ('a * 'b) list
val remove_assq : 'a -> ('a * 'b) list -> ('a * 'b) list
val split : ('a * 'b) list -> 'a list * 'b list
val combine : 'a list -> 'b list -> ('a * 'b) list
val sort : ('a -> 'a -> int) -> 'a list -> 'a list
val stable_sort : ('a -> 'a -> int) -> 'a list -> 'a list
val fast_sort : ('a -> 'a -> int) -> 'a list -> 'a list
val sort_uniq : ('a -> 'a -> int) -> 'a list -> 'a list
val merge : ('a -> 'a -> int) -> 'a list -> 'a list -> 'a list
type +'a t = 'a list
\ No newline at end of file diff --git a/dev/containers/CCString/.jbuilder-keep b/dev/containers/CCShims_/.dune-keep similarity index 100% rename from dev/containers/CCString/.jbuilder-keep rename to dev/containers/CCShims_/.dune-keep diff --git a/dev/containers/CCShims_/index.html b/dev/containers/CCShims_/index.html new file mode 100644 index 00000000..30359759 --- /dev/null +++ b/dev/containers/CCShims_/index.html @@ -0,0 +1,2 @@ + +CCShims_ (containers.CCShims_)

Module CCShims_

module Stdlib = Pervasives
\ No newline at end of file diff --git a/dev/containers/CCUtf8_string/.jbuilder-keep b/dev/containers/CCSimple_queue/.dune-keep similarity index 100% rename from dev/containers/CCUtf8_string/.jbuilder-keep rename to dev/containers/CCSimple_queue/.dune-keep diff --git a/dev/containers/CCSimple_queue/Infix/index.html b/dev/containers/CCSimple_queue/Infix/index.html new file mode 100644 index 00000000..a64a94e4 --- /dev/null +++ b/dev/containers/CCSimple_queue/Infix/index.html @@ -0,0 +1,2 @@ + +Infix (containers.CCSimple_queue.Infix)

Module CCSimple_queue.Infix

val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Alias to map.

val (@) : 'a t -> 'a t -> 'a t

Alias to append.

val (<::) : 'a t -> 'a -> 'a t

Alias to snoc.

\ No newline at end of file diff --git a/dev/containers/CCSimple_queue/index.html b/dev/containers/CCSimple_queue/index.html new file mode 100644 index 00000000..d3514a78 --- /dev/null +++ b/dev/containers/CCSimple_queue/index.html @@ -0,0 +1,2 @@ + +CCSimple_queue (containers.CCSimple_queue)

Module CCSimple_queue

Functional queues (fifo)

type 'a sequence = ('a -> unit) -> unit
type 'a printer = Format.formatter -> 'a -> unit
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a gen = unit -> 'a option
type +'a t

Queue containing elements of type 'a

val empty : 'a t
val is_empty : 'a t -> bool
val push : 'a -> 'a t -> 'a t

Push element at the end of the queue.

val snoc : 'a t -> 'a -> 'a t

Flip version of push.

val peek : 'a t -> 'a option

First element of the queue.

val peek_exn : 'a t -> 'a

Same as peek but

raises Invalid_argument

if the queue is empty.

val pop : 'a t -> ('a * 'a t) option

Get and remove the first element.

val pop_exn : 'a t -> 'a * 'a t

Same as pop, but fails on empty queues.

raises Invalid_argument

if the queue is empty.

val junk : 'a t -> 'a t

Remove first element. If the queue is empty, do nothing.

val append : 'a t -> 'a t -> 'a t

Append two queues. Elements from the second one come after elements of the first one. Linear in the size of the second queue.

val map : ('a -> 'b) -> 'a t -> 'b t

Map values.

val rev : 'a t -> 'a t

Reverse the queue. Constant time.

val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
module Infix : sig ... end
include module type of Infix
val (>|=) : 'a t -> ('a -> 'b) -> 'b t

Alias to map.

val (@) : 'a t -> 'a t -> 'a t

Alias to append.

val (<::) : 'a t -> 'a -> 'a t

Alias to snoc.

val length : 'a t -> int

Number of elements in the queue (linear in time).

val fold : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b
val iter : ('a -> unit) -> 'a t -> unit
val to_list : 'a t -> 'a list
val add_list : 'a t -> 'a list -> 'a t
val of_list : 'a list -> 'a t
val to_seq : 'a t -> 'a sequence
val add_seq : 'a t -> 'a sequence -> 'a t
val of_seq : 'a sequence -> 'a t
val to_klist : 'a t -> 'a klist
val add_klist : 'a t -> 'a klist -> 'a t
val of_klist : 'a klist -> 'a t
val of_gen : 'a gen -> 'a t
val add_gen : 'a t -> 'a gen -> 'a t
val to_gen : 'a t -> 'a gen

IO

val pp : ?⁠sep:unit printer -> 'a printer -> 'a t printer
\ No newline at end of file diff --git a/dev/containers/CCString.odoc b/dev/containers/CCString.odoc deleted file mode 100644 index 7f38db5bf11ad2f065eeb80a9c20dad85936b3f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17813 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 U!oWC2E!~3qE>d^=cBE4O4-}}k6951J diff --git a/dev/containers/CCVector/.jbuilder-keep b/dev/containers/CCString/.dune-keep similarity index 100% rename from dev/containers/CCVector/.jbuilder-keep rename to dev/containers/CCString/.dune-keep diff --git a/dev/containers/CCString/Find/index.html b/dev/containers/CCString/Find/index.html index 17af4ee8..96c230d3 100644 --- a/dev/containers/CCString/Find/index.html +++ b/dev/containers/CCString/Find/index.html @@ -1,2 +1,2 @@ -Find (containers.CCString.Find)

Module CCString.Find

type _ pattern
val compile : string -> [ `Direct ] pattern
val rcompile : string -> [ `Reverse ] pattern
val find : ?⁠start:int -> pattern:[ `Direct ] pattern -> string -> int

Search for pattern in the string, left-to-right.

returns

the offset of the first match, -1 otherwise.

parameter start

offset in string at which we start.

val rfind : ?⁠start:int -> pattern:[ `Reverse ] pattern -> string -> int

Search for pattern in the string, right-to-left.

returns

the offset of the start of the first match from the right, -1 otherwise.

parameter start

right-offset in string at which we start.

\ No newline at end of file +Find (containers.CCString.Find)

Module CCString.Find

type _ pattern
val compile : string -> [ `Direct ] pattern
val rcompile : string -> [ `Reverse ] pattern
val find : ?⁠start:int -> pattern:[ `Direct ] pattern -> string -> int

Search for pattern in the string, left-to-right.

returns

the offset of the first match, -1 otherwise.

parameter start

offset in string at which we start.

val rfind : ?⁠start:int -> pattern:[ `Reverse ] pattern -> string -> int

Search for pattern in the string, right-to-left.

returns

the offset of the start of the first match from the right, -1 otherwise.

parameter start

right-offset in string at which we start.

\ No newline at end of file diff --git a/dev/containers/CCString/Split/index.html b/dev/containers/CCString/Split/index.html index 6204aa63..74929e48 100644 --- a/dev/containers/CCString/Split/index.html +++ b/dev/containers/CCString/Split/index.html @@ -1,2 +1,2 @@ -Split (containers.CCString.Split)

Module CCString.Split

type drop_if_empty = {
first : bool;
last : bool;
}

Specification of what to do with empty blocks, as in split ~by:"-" "-a-b-".

  • {first=false; last=false} will return ""; "a"; "b"; ""
  • {first=true; last=false} will return "a"; "b" ""
  • {first=false; last=true} will return ""; "a"; "b"
  • {first=true; last=true} will return "a"; "b"

The default value of all remaining functions is Drop_none.

since
1.5
val no_drop : drop_if_empty

Do not drop any group, even empty and on borders.

since
1.5
val list_ : ?⁠drop:drop_if_empty -> by:string -> string -> (string * int * int) list

Split the given string along the given separator by. Should only be used with very small separators, otherwise use Containers_string.KMP.

returns

a list of slices (s,index,length) that are separated by by. String.sub can then be used to actually extract a string from the slice.

raises Failure

if by = "".

val gen : ?⁠drop:drop_if_empty -> by:string -> string -> (string * int * int) gen
val seq : ?⁠drop:drop_if_empty -> by:string -> string -> (string * int * int) sequence
val klist : ?⁠drop:drop_if_empty -> by:string -> string -> (string * int * int) klist
Copying functions

Those split functions actually copy the substrings, which can be more convenient but less efficient in general.

val list_cpy : ?⁠drop:drop_if_empty -> by:string -> string -> string list
val gen_cpy : ?⁠drop:drop_if_empty -> by:string -> string -> string gen
val seq_cpy : ?⁠drop:drop_if_empty -> by:string -> string -> string sequence
val klist_cpy : ?⁠drop:drop_if_empty -> by:string -> string -> string klist
val left : by:string -> string -> (string * string) option

Split on the first occurrence of by from the leftmost part of the string.

since
0.12
val left_exn : by:string -> string -> string * string

Split on the first occurrence of by from the leftmost part of the string.

raises Not_found

if by is not part of the string.

since
0.16
val right : by:string -> string -> (string * string) option

Split on the first occurrence of by from the rightmost part of the string.

since
0.12
val right_exn : by:string -> string -> string * string

Split on the first occurrence of by from the rightmost part of the string.

raises Not_found

if by is not part of the string.

since
0.16
\ No newline at end of file +Split (containers.CCString.Split)

Module CCString.Split

type drop_if_empty = {
first : bool;
last : bool;
}

Specification of what to do with empty blocks, as in split ~by:"-" "-a-b-".

  • {first=false; last=false} will return ""; "a"; "b"; ""
  • {first=true; last=false} will return "a"; "b" ""
  • {first=false; last=true} will return ""; "a"; "b"
  • {first=true; last=true} will return "a"; "b"

The default value of all remaining functions is Drop_none.

since
1.5
val no_drop : drop_if_empty

Do not drop any group, even empty and on borders.

since
1.5
val list_ : ?⁠drop:drop_if_empty -> by:string -> string -> (string * int * int) list

Split the given string along the given separator by. Should only be used with very small separators, otherwise use Containers_string.KMP.

returns

a list of slices (s,index,length) that are separated by by. String.sub can then be used to actually extract a string from the slice.

raises Failure

if by = "".

val gen : ?⁠drop:drop_if_empty -> by:string -> string -> (string * int * int) gen
val seq : ?⁠drop:drop_if_empty -> by:string -> string -> (string * int * int) sequence
val klist : ?⁠drop:drop_if_empty -> by:string -> string -> (string * int * int) klist
Copying functions

Those split functions actually copy the substrings, which can be more convenient but less efficient in general.

val list_cpy : ?⁠drop:drop_if_empty -> by:string -> string -> string list
val gen_cpy : ?⁠drop:drop_if_empty -> by:string -> string -> string gen
val seq_cpy : ?⁠drop:drop_if_empty -> by:string -> string -> string sequence
val klist_cpy : ?⁠drop:drop_if_empty -> by:string -> string -> string klist
val left : by:string -> string -> (string * string) option

Split on the first occurrence of by from the leftmost part of the string.

since
0.12
val left_exn : by:string -> string -> string * string

Split on the first occurrence of by from the leftmost part of the string.

raises Not_found

if by is not part of the string.

since
0.16
val right : by:string -> string -> (string * string) option

Split on the first occurrence of by from the rightmost part of the string.

since
0.12
val right_exn : by:string -> string -> string * string

Split on the first occurrence of by from the rightmost part of the string.

raises Not_found

if by is not part of the string.

since
0.16
\ No newline at end of file diff --git a/dev/containers/CCString/Sub/index.html b/dev/containers/CCString/Sub/index.html index 327b3aa7..3f8330e0 100644 --- a/dev/containers/CCString/Sub/index.html +++ b/dev/containers/CCString/Sub/index.html @@ -1,2 +1,2 @@ -Sub (containers.CCString.Sub)

Module CCString.Sub

type t = string * int * int

A string, an offset, and the length of the slice.

val make : string -> int -> len:int -> t
val full : string -> t

Full string.

val copy : t -> string

Make a copy of the substring.

val underlying : t -> string
val sub : t -> int -> int -> t

Sub-slice.

val get : t -> int -> char

get s i gets the i-th element, or fails.

raises Invalid_argument

if the index is not within 0 ... length - 1.

since
1.2
include S with type t := t
type t
val length : t -> int

Return the length (number of characters) of the given string.

val blit : t -> int -> Bytes.t -> int -> int -> unit

Like String.blit. Compatible with the -safe-string option.

raises Invalid_argument

if indices are not valid.

val fold : ('a -> char -> 'a) -> 'a -> t -> 'a

Fold on chars by increasing index.

since
0.7

Conversions

val to_gen : t -> char gen

Return the gen of characters contained in the string.

val to_seq : t -> char sequence

Return the sequence of characters contained in the string.

val to_klist : t -> char klist

Return the klist of characters contained in the string.

val to_list : t -> char list

Return the list of characters contained in the string.

val pp_buf : Buffer.t -> t -> unit

Renamed from pp since 2.0.

val pp : Format.formatter -> t -> unit

Print the string within quotes.

Renamed from print since 2.0.

\ No newline at end of file +Sub (containers.CCString.Sub)

Module CCString.Sub

type t = string * int * int

A string, an offset, and the length of the slice.

val make : string -> int -> len:int -> t
val full : string -> t

Full string.

val copy : t -> string

Make a copy of the substring.

val underlying : t -> string
val sub : t -> int -> int -> t

Sub-slice.

val get : t -> int -> char

get s i gets the i-th element, or fails.

raises Invalid_argument

if the index is not within 0 ... length - 1.

since
1.2
include S with type t := t
type t
val length : t -> int

Return the length (number of characters) of the given string.

val blit : t -> int -> Bytes.t -> int -> int -> unit

Like String.blit. Compatible with the -safe-string option.

raises Invalid_argument

if indices are not valid.

val fold : ('a -> char -> 'a) -> 'a -> t -> 'a

Fold on chars by increasing index.

since
0.7

Conversions

val to_gen : t -> char gen

Return the gen of characters contained in the string.

val to_seq : t -> char sequence

Return the sequence of characters contained in the string.

val to_klist : t -> char klist

Return the klist of characters contained in the string.

val to_list : t -> char list

Return the list of characters contained in the string.

val pp_buf : Buffer.t -> t -> unit

Renamed from pp since 2.0.

val pp : Format.formatter -> t -> unit

Print the string within quotes.

Renamed from print since 2.0.

\ No newline at end of file diff --git a/dev/containers/CCString/index.html b/dev/containers/CCString/index.html index 968b9362..7dec13ca 100644 --- a/dev/containers/CCString/index.html +++ b/dev/containers/CCString/index.html @@ -1,2 +1,2 @@ -CCString (containers.CCString)

Module CCString

Basic String Utils

type 'a gen = unit -> 'a option
type 'a sequence = ('a -> unit) -> unit
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]

Common Signature

module type S = sig ... end

Strings

include module type of sig ... end
val length : string -> int
val get : string -> int -> char
val set : bytes -> int -> char -> unit
val create : int -> bytes
val make : int -> char -> string
val init : int -> (int -> char) -> string
val copy : string -> string
val sub : string -> int -> int -> string
val fill : bytes -> int -> int -> char -> unit
val blit : string -> int -> bytes -> int -> int -> unit
val concat : string -> string list -> string
val iter : (char -> unit) -> string -> unit
val iteri : (int -> char -> unit) -> string -> unit
val map : (char -> char) -> string -> string
val mapi : (int -> char -> char) -> string -> string
val trim : string -> string
val escaped : string -> string
val index : string -> char -> int
val index_opt : string -> char -> int option
val rindex : string -> char -> int
val rindex_opt : string -> char -> int option
val index_from : string -> int -> char -> int
val index_from_opt : string -> int -> char -> int option
val rindex_from : string -> int -> char -> int
val rindex_from_opt : string -> int -> char -> int option
val contains : string -> char -> bool
val contains_from : string -> int -> char -> bool
val rcontains_from : string -> int -> char -> bool
val uppercase : string -> string
val lowercase : string -> string
val capitalize : string -> string
val uncapitalize : string -> string
val uppercase_ascii : string -> string
val lowercase_ascii : string -> string
val capitalize_ascii : string -> string
val uncapitalize_ascii : string -> string
type t = string
val compare : t -> t -> int
val equal : t -> t -> bool
val split_on_char : char -> string -> string list
val unsafe_get : string -> int -> char
val unsafe_set : bytes -> int -> char -> unit
val unsafe_blit : string -> int -> bytes -> int -> int -> unit
val unsafe_fill : bytes -> int -> int -> char -> unit
val equal : string -> string -> bool

Equality function on strings.

val compare : string -> string -> int
val is_empty : string -> bool

is_empty s returns true iff s is empty (i.e. its length is 0).

since
1.5
val hash : string -> int
val init : int -> (int -> char) -> string

Like Array.init.

since
0.3.3
val rev : string -> string

rev s returns the reverse of s.

since
0.17
val pad : ?⁠side:[ `Left | `Right ] -> ?⁠c:char -> int -> string -> string

pad n str ensures that str is at least n bytes long, and pads it on the side with c if it's not the case.

parameter side

determines where padding occurs (default: `Left).

parameter c

the char used to pad (default: ' ').

since
0.17
val of_char : char -> string

of_char 'a' is "a".

since
0.19
val of_gen : char gen -> string

Convert a gen of characters to a string.

val of_seq : char sequence -> string

Convert a sequence of characters to a string.

val of_klist : char klist -> string

Convert a klist of characters to a string.

val of_list : char list -> string

Convert a list of characters to a string.

val of_array : char array -> string

Convert an array of characters to a string.

val to_array : string -> char array

Return the array of characters contained in the string.

val find : ?⁠start:int -> sub:string -> string -> int

Find sub in string, returns its first index or -1.

val find_all : ?⁠start:int -> sub:string -> string -> int gen

find_all ~sub s finds all occurrences of sub in s, even overlapping instances.

parameter start

starting position in s.

since
0.17
val find_all_l : ?⁠start:int -> sub:string -> string -> int list

find_all_l ~sub s finds all occurrences of sub in s and returns them in a list.

parameter start

starting position in s.

since
0.17
val mem : ?⁠start:int -> sub:string -> string -> bool

mem ~sub s is true iff sub is a substring of s.

since
0.12
val rfind : sub:string -> string -> int

Find sub in string from the right, returns its first index or -1. Should only be used with very small sub.

since
0.12
val replace : ?⁠which:[ `Left | `Right | `All ] -> sub:string -> by:string -> string -> string

replace ~sub ~by s replaces some occurrences of sub by by in s.

parameter which

decides whether the occurrences to replace are:

  • `Left first occurrence from the left (beginning).
  • `Right first occurrence from the right (end).
  • `All all occurrences (default).
raises Invalid_argument

if sub = "".

since
0.14
val is_sub : sub:string -> int -> string -> int -> sub_len:int -> bool

is_sub ~sub i s j ~len returns true iff the substring of sub starting at position i and of length len is a substring of s starting at position j.

val repeat : string -> int -> string

The same string, repeated n times.

val prefix : pre:string -> string -> bool

prefix ~pre s returns true iff pre is a prefix of s.

val suffix : suf:string -> string -> bool

suffix ~suf s returns true iff suf is a suffix of s.

since
0.7
val chop_prefix : pre:string -> string -> string option

chop_prefix ~pre s removes pre from s if pre really is a prefix of s, returns None otherwise.

since
0.17
val chop_suffix : suf:string -> string -> string option

chop_suffix ~suf s removes suf from s if suf really is a suffix of s, returns None otherwise.

since
0.17
val take : int -> string -> string

take n s keeps only the n first chars of s.

since
0.17
val drop : int -> string -> string

drop n s removes the n first chars of s.

since
0.17
val take_drop : int -> string -> string * string

take_drop n s = take n s, drop n s.

since
0.17
val lines : string -> string list

lines s returns a list of the lines of s (splits along '\n').

since
0.10
val lines_gen : string -> string gen

lines_gen s returns a generator of the lines of s (splits along '\n').

since
0.10
val concat_gen : sep:string -> string gen -> string

concat_gen ~sep g concatenates all strings of g, separated with sep.

since
0.10
val unlines : string list -> string

unlines l concatenates all strings of l, separated with '\n'.

since
0.10
val unlines_gen : string gen -> string

unlines_gen g concatenates all strings of g, separated with '\n'.

since
0.10
val set : string -> int -> char -> string

set s i c creates a new string which is a copy of s, except for index i, which becomes c.

raises Invalid_argument

if i is an invalid index.

since
0.12
val iter : (char -> unit) -> string -> unit

Alias to String.iter.

since
0.12
val iteri : (int -> char -> unit) -> string -> unit

Iter on chars with their index.

since
0.12
val map : (char -> char) -> string -> string

Map chars.

since
0.12
val mapi : (int -> char -> char) -> string -> string

Map chars with their index.

since
0.12
val filter_map : (char -> char option) -> string -> string

filter_map f s calls (f a0) (f a1) ... (f an) where a0 ... an are the characters of s. It returns the string of characters ci such as f ai = Some ci (when f returns None, the corresponding element of s is discarded).

since
0.17
val filter : (char -> bool) -> string -> string

filter f s discards characters not satisfying f.

since
0.17
val flat_map : ?⁠sep:string -> (char -> string) -> string -> string

Map each chars to a string, then concatenates them all.

parameter sep

optional separator between each generated string.

since
0.12
val for_all : (char -> bool) -> string -> bool

True for all chars?

since
0.12
val exists : (char -> bool) -> string -> bool

True for some char?

since
0.12
include S with type S.t := string
type t
val length : t -> int

Return the length (number of characters) of the given string.

val blit : t -> int -> Bytes.t -> int -> int -> unit

Like String.blit. Compatible with the -safe-string option.

raises Invalid_argument

if indices are not valid.

val fold : ('a -> char -> 'a) -> 'a -> t -> 'a

Fold on chars by increasing index.

since
0.7

Conversions

val to_gen : t -> char gen

Return the gen of characters contained in the string.

val to_seq : t -> char sequence

Return the sequence of characters contained in the string.

val to_klist : t -> char klist

Return the klist of characters contained in the string.

val to_list : t -> char list

Return the list of characters contained in the string.

val pp_buf : Buffer.t -> t -> unit

Renamed from pp since 2.0.

val pp : Format.formatter -> t -> unit

Print the string within quotes.

Renamed from print since 2.0.

val drop_while : (char -> bool) -> t -> t

drop_while f s discards any characters starting from the left, up to the first character c not satisfying f c.

since
2.2
val rdrop_while : (char -> bool) -> t -> t

rdrop_while f s discards any characters starting from the right, up to the first character c not satisfying f c.

since
2.2
val ltrim : t -> t

Trim space on the left (see String.trim for more details).

since
1.2
val rtrim : t -> t

Trim space on the right (see String.trim for more details).

since
1.2

Operations on 2 strings

val map2 : (char -> char -> char) -> string -> string -> string

Map pairs of chars.

raises Invalid_argument

if the strings have not the same length.

since
0.12
val iter2 : (char -> char -> unit) -> string -> string -> unit

Iterate on pairs of chars.

raises Invalid_argument

if the strings have not the same length.

since
0.12
val iteri2 : (int -> char -> char -> unit) -> string -> string -> unit

Iterate on pairs of chars with their index.

raises Invalid_argument

if the strings have not the same length.

since
0.12
val fold2 : ('a -> char -> char -> 'a) -> 'a -> string -> string -> 'a

Fold on pairs of chars.

raises Invalid_argument

if the strings have not the same length.

since
0.12
val for_all2 : (char -> char -> bool) -> string -> string -> bool

All pairs of chars respect the predicate?

raises Invalid_argument

if the strings have not the same length.

since
0.12
val exists2 : (char -> char -> bool) -> string -> string -> bool

Exists a pair of chars?

raises Invalid_argument

if the strings have not the same length.

since
0.12

Ascii functions

Those functions are deprecated in String since 4.03, so we provide a stable alias for them even in older versions.

val capitalize_ascii : string -> string

See String.

since
0.18
val uncapitalize_ascii : string -> string

See String.

since
0.18
val uppercase_ascii : string -> string

See String.

since
0.18
val lowercase_ascii : string -> string

See String.

since
0.18
val equal_caseless : string -> string -> bool

Comparison without respect to ascii lowercase.

since
1.2

Finding

A relatively efficient algorithm for finding sub-strings.

since
1.0
module Find : sig ... end

Splitting

module Split : sig ... end
val split_on_char : char -> string -> string list

Split the string along the given char.

since
1.2
val split : by:string -> string -> string list

Alias to Split.list_cpy.

since
1.2

Utils

val compare_versions : string -> string -> int

compare_versions a b compares version strings a and b, considering that numbers are above text.

since
0.13
val compare_natural : string -> string -> int

Natural Sort Order, comparing chunks of digits as natural numbers. https://en.wikipedia.org/wiki/Natural_sort_order

since
1.3
val edit_distance : string -> string -> int

Edition distance between two strings. This satisfies the classical distance axioms: it is always positive, symmetric, and satisfies the formula distance a b + distance b c >= distance a c.

Slices

A contiguous part of a string

module Sub : sig ... end
\ No newline at end of file +CCString (containers.CCString)

Module CCString

Basic String Utils

type 'a gen = unit -> 'a option
type 'a sequence = ('a -> unit) -> unit
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]

Common Signature

module type S = sig ... end

Strings

include module type of sig ... end
val length : string -> int
val get : string -> int -> char
val set : bytes -> int -> char -> unit
val create : int -> bytes
val make : int -> char -> string
val init : int -> (int -> char) -> string
val copy : string -> string
val sub : string -> int -> int -> string
val fill : bytes -> int -> int -> char -> unit
val blit : string -> int -> bytes -> int -> int -> unit
val concat : string -> string list -> string
val iter : (char -> unit) -> string -> unit
val iteri : (int -> char -> unit) -> string -> unit
val map : (char -> char) -> string -> string
val mapi : (int -> char -> char) -> string -> string
val trim : string -> string
val escaped : string -> string
val index : string -> char -> int
val index_opt : string -> char -> int option
val rindex : string -> char -> int
val rindex_opt : string -> char -> int option
val index_from : string -> int -> char -> int
val index_from_opt : string -> int -> char -> int option
val rindex_from : string -> int -> char -> int
val rindex_from_opt : string -> int -> char -> int option
val contains : string -> char -> bool
val contains_from : string -> int -> char -> bool
val rcontains_from : string -> int -> char -> bool
val uppercase : string -> string
val lowercase : string -> string
val capitalize : string -> string
val uncapitalize : string -> string
val uppercase_ascii : string -> string
val lowercase_ascii : string -> string
val capitalize_ascii : string -> string
val uncapitalize_ascii : string -> string
type t = string
val compare : t -> t -> int
val equal : t -> t -> bool
val split_on_char : char -> string -> string list
val unsafe_get : string -> int -> char
val unsafe_set : bytes -> int -> char -> unit
val unsafe_blit : string -> int -> bytes -> int -> int -> unit
val unsafe_fill : bytes -> int -> int -> char -> unit
val equal : string -> string -> bool

Equality function on strings.

val compare : string -> string -> int
val is_empty : string -> bool

is_empty s returns true iff s is empty (i.e. its length is 0).

since
1.5
val hash : string -> int
val init : int -> (int -> char) -> string

Like Array.init.

since
0.3.3
val rev : string -> string

rev s returns the reverse of s.

since
0.17
val pad : ?⁠side:[ `Left | `Right ] -> ?⁠c:char -> int -> string -> string

pad n str ensures that str is at least n bytes long, and pads it on the side with c if it's not the case.

parameter side

determines where padding occurs (default: `Left).

parameter c

the char used to pad (default: ' ').

since
0.17
val of_char : char -> string

of_char 'a' is "a".

since
0.19
val of_gen : char gen -> string

Convert a gen of characters to a string.

val of_seq : char sequence -> string

Convert a sequence of characters to a string.

val of_klist : char klist -> string

Convert a klist of characters to a string.

val of_list : char list -> string

Convert a list of characters to a string.

val of_array : char array -> string

Convert an array of characters to a string.

val to_array : string -> char array

Return the array of characters contained in the string.

val find : ?⁠start:int -> sub:string -> string -> int

Find sub in string, returns its first index or -1.

val find_all : ?⁠start:int -> sub:string -> string -> int gen

find_all ~sub s finds all occurrences of sub in s, even overlapping instances.

parameter start

starting position in s.

since
0.17
val find_all_l : ?⁠start:int -> sub:string -> string -> int list

find_all_l ~sub s finds all occurrences of sub in s and returns them in a list.

parameter start

starting position in s.

since
0.17
val mem : ?⁠start:int -> sub:string -> string -> bool

mem ~sub s is true iff sub is a substring of s.

since
0.12
val rfind : sub:string -> string -> int

Find sub in string from the right, returns its first index or -1. Should only be used with very small sub.

since
0.12
val replace : ?⁠which:[ `Left | `Right | `All ] -> sub:string -> by:string -> string -> string

replace ~sub ~by s replaces some occurrences of sub by by in s.

parameter which

decides whether the occurrences to replace are:

  • `Left first occurrence from the left (beginning).
  • `Right first occurrence from the right (end).
  • `All all occurrences (default).
raises Invalid_argument

if sub = "".

since
0.14
val is_sub : sub:string -> int -> string -> int -> sub_len:int -> bool

is_sub ~sub i s j ~len returns true iff the substring of sub starting at position i and of length len is a substring of s starting at position j.

val repeat : string -> int -> string

The same string, repeated n times.

val prefix : pre:string -> string -> bool

prefix ~pre s returns true iff pre is a prefix of s.

val suffix : suf:string -> string -> bool

suffix ~suf s returns true iff suf is a suffix of s.

since
0.7
val chop_prefix : pre:string -> string -> string option

chop_prefix ~pre s removes pre from s if pre really is a prefix of s, returns None otherwise.

since
0.17
val chop_suffix : suf:string -> string -> string option

chop_suffix ~suf s removes suf from s if suf really is a suffix of s, returns None otherwise.

since
0.17
val take : int -> string -> string

take n s keeps only the n first chars of s.

since
0.17
val drop : int -> string -> string

drop n s removes the n first chars of s.

since
0.17
val take_drop : int -> string -> string * string

take_drop n s = take n s, drop n s.

since
0.17
val lines : string -> string list

lines s returns a list of the lines of s (splits along '\n').

since
0.10
val lines_gen : string -> string gen

lines_gen s returns a generator of the lines of s (splits along '\n').

since
0.10
val concat_gen : sep:string -> string gen -> string

concat_gen ~sep g concatenates all strings of g, separated with sep.

since
0.10
val unlines : string list -> string

unlines l concatenates all strings of l, separated with '\n'.

since
0.10
val unlines_gen : string gen -> string

unlines_gen g concatenates all strings of g, separated with '\n'.

since
0.10
val set : string -> int -> char -> string

set s i c creates a new string which is a copy of s, except for index i, which becomes c.

raises Invalid_argument

if i is an invalid index.

since
0.12
val iter : (char -> unit) -> string -> unit

Alias to String.iter.

since
0.12
val iteri : (int -> char -> unit) -> string -> unit

Iter on chars with their index.

since
0.12
val map : (char -> char) -> string -> string

Map chars.

since
0.12
val mapi : (int -> char -> char) -> string -> string

Map chars with their index.

since
0.12
val filter_map : (char -> char option) -> string -> string

filter_map f s calls (f a0) (f a1) ... (f an) where a0 ... an are the characters of s. It returns the string of characters ci such as f ai = Some ci (when f returns None, the corresponding element of s is discarded).

since
0.17
val filter : (char -> bool) -> string -> string

filter f s discards characters not satisfying f.

since
0.17
val flat_map : ?⁠sep:string -> (char -> string) -> string -> string

Map each chars to a string, then concatenates them all.

parameter sep

optional separator between each generated string.

since
0.12
val for_all : (char -> bool) -> string -> bool

True for all chars?

since
0.12
val exists : (char -> bool) -> string -> bool

True for some char?

since
0.12
include S with type S.t := string
type t
val length : t -> int

Return the length (number of characters) of the given string.

val blit : t -> int -> Bytes.t -> int -> int -> unit

Like String.blit. Compatible with the -safe-string option.

raises Invalid_argument

if indices are not valid.

val fold : ('a -> char -> 'a) -> 'a -> t -> 'a

Fold on chars by increasing index.

since
0.7

Conversions

val to_gen : t -> char gen

Return the gen of characters contained in the string.

val to_seq : t -> char sequence

Return the sequence of characters contained in the string.

val to_klist : t -> char klist

Return the klist of characters contained in the string.

val to_list : t -> char list

Return the list of characters contained in the string.

val pp_buf : Buffer.t -> t -> unit

Renamed from pp since 2.0.

val pp : Format.formatter -> t -> unit

Print the string within quotes.

Renamed from print since 2.0.

val drop_while : (char -> bool) -> t -> t

drop_while f s discards any characters starting from the left, up to the first character c not satisfying f c.

since
2.2
val rdrop_while : (char -> bool) -> t -> t

rdrop_while f s discards any characters starting from the right, up to the first character c not satisfying f c.

since
2.2
val ltrim : t -> t

Trim space on the left (see String.trim for more details).

since
1.2
val rtrim : t -> t

Trim space on the right (see String.trim for more details).

since
1.2

Operations on 2 strings

val map2 : (char -> char -> char) -> string -> string -> string

Map pairs of chars.

raises Invalid_argument

if the strings have not the same length.

since
0.12
val iter2 : (char -> char -> unit) -> string -> string -> unit

Iterate on pairs of chars.

raises Invalid_argument

if the strings have not the same length.

since
0.12
val iteri2 : (int -> char -> char -> unit) -> string -> string -> unit

Iterate on pairs of chars with their index.

raises Invalid_argument

if the strings have not the same length.

since
0.12
val fold2 : ('a -> char -> char -> 'a) -> 'a -> string -> string -> 'a

Fold on pairs of chars.

raises Invalid_argument

if the strings have not the same length.

since
0.12
val for_all2 : (char -> char -> bool) -> string -> string -> bool

All pairs of chars respect the predicate?

raises Invalid_argument

if the strings have not the same length.

since
0.12
val exists2 : (char -> char -> bool) -> string -> string -> bool

Exists a pair of chars?

raises Invalid_argument

if the strings have not the same length.

since
0.12

Ascii functions

Those functions are deprecated in String since 4.03, so we provide a stable alias for them even in older versions.

val capitalize_ascii : string -> string

See String.

since
0.18
val uncapitalize_ascii : string -> string

See String.

since
0.18
val uppercase_ascii : string -> string

See String.

since
0.18
val lowercase_ascii : string -> string

See String.

since
0.18
val equal_caseless : string -> string -> bool

Comparison without respect to ascii lowercase.

since
1.2

Finding

A relatively efficient algorithm for finding sub-strings.

since
1.0
module Find : sig ... end

Splitting

module Split : sig ... end
val split_on_char : char -> string -> string list

Split the string along the given char.

since
1.2
val split : by:string -> string -> string list

Alias to Split.list_cpy.

since
1.2

Utils

val compare_versions : string -> string -> int

compare_versions a b compares version strings a and b, considering that numbers are above text.

since
0.13
val compare_natural : string -> string -> int

Natural Sort Order, comparing chunks of digits as natural numbers. https://en.wikipedia.org/wiki/Natural_sort_order

since
1.3
val edit_distance : string -> string -> int

Edition distance between two strings. This satisfies the classical distance axioms: it is always positive, symmetric, and satisfies the formula distance a b + distance b c >= distance a c.

Slices

A contiguous part of a string

module Sub : sig ... end
\ No newline at end of file diff --git a/dev/containers/CCString/module-type-S/index.html b/dev/containers/CCString/module-type-S/index.html index fea9855c..3514a22e 100644 --- a/dev/containers/CCString/module-type-S/index.html +++ b/dev/containers/CCString/module-type-S/index.html @@ -1,2 +1,2 @@ -S (containers.CCString.S)

Module type CCString.S

type t
val length : t -> int

Return the length (number of characters) of the given string.

val blit : t -> int -> Bytes.t -> int -> int -> unit

Like String.blit. Compatible with the -safe-string option.

raises Invalid_argument

if indices are not valid.

val fold : ('a -> char -> 'a) -> 'a -> t -> 'a

Fold on chars by increasing index.

since
0.7

Conversions

val to_gen : t -> char gen

Return the gen of characters contained in the string.

val to_seq : t -> char sequence

Return the sequence of characters contained in the string.

val to_klist : t -> char klist

Return the klist of characters contained in the string.

val to_list : t -> char list

Return the list of characters contained in the string.

val pp_buf : Buffer.t -> t -> unit

Renamed from pp since 2.0.

val pp : Format.formatter -> t -> unit

Print the string within quotes.

Renamed from print since 2.0.

\ No newline at end of file +S (containers.CCString.S)

Module type CCString.S

type t
val length : t -> int

Return the length (number of characters) of the given string.

val blit : t -> int -> Bytes.t -> int -> int -> unit

Like String.blit. Compatible with the -safe-string option.

raises Invalid_argument

if indices are not valid.

val fold : ('a -> char -> 'a) -> 'a -> t -> 'a

Fold on chars by increasing index.

since
0.7

Conversions

val to_gen : t -> char gen

Return the gen of characters contained in the string.

val to_seq : t -> char sequence

Return the sequence of characters contained in the string.

val to_klist : t -> char klist

Return the klist of characters contained in the string.

val to_list : t -> char list

Return the list of characters contained in the string.

val pp_buf : Buffer.t -> t -> unit

Renamed from pp since 2.0.

val pp : Format.formatter -> t -> unit

Print the string within quotes.

Renamed from print since 2.0.

\ No newline at end of file diff --git a/dev/containers/Containers/.jbuilder-keep b/dev/containers/CCStringLabels/.dune-keep similarity index 100% rename from dev/containers/Containers/.jbuilder-keep rename to dev/containers/CCStringLabels/.dune-keep diff --git a/dev/containers/CCStringLabels/Find/index.html b/dev/containers/CCStringLabels/Find/index.html new file mode 100644 index 00000000..08190e38 --- /dev/null +++ b/dev/containers/CCStringLabels/Find/index.html @@ -0,0 +1,2 @@ + +Find (containers.CCStringLabels.Find)

Module CCStringLabels.Find

type _ pattern
val compile : string -> [ `Direct ] pattern
val rcompile : string -> [ `Reverse ] pattern
val find : ?⁠start:int -> pattern:[ `Direct ] pattern -> string -> int

Search for pattern in the string, left-to-right.

returns

the offset of the first match, -1 otherwise.

parameter start

offset in string at which we start.

val rfind : ?⁠start:int -> pattern:[ `Reverse ] pattern -> string -> int

Search for pattern in the string, right-to-left.

returns

the offset of the start of the first match from the right, -1 otherwise.

parameter start

right-offset in string at which we start.

\ No newline at end of file diff --git a/dev/containers/CCStringLabels/Split/index.html b/dev/containers/CCStringLabels/Split/index.html new file mode 100644 index 00000000..148382eb --- /dev/null +++ b/dev/containers/CCStringLabels/Split/index.html @@ -0,0 +1,2 @@ + +Split (containers.CCStringLabels.Split)

Module CCStringLabels.Split

type drop_if_empty = {
first : bool;
last : bool;
}

Specification of what to do with empty blocks, as in split ~by:"-" "-a-b-".

  • {first=false; last=false} will return ""; "a"; "b"; ""
  • {first=true; last=false} will return "a"; "b" ""
  • {first=false; last=true} will return ""; "a"; "b"
  • {first=true; last=true} will return "a"; "b"

The default value of all remaining functions is Drop_none.

since
1.5
val no_drop : drop_if_empty

Do not drop any group, even empty and on borders.

since
1.5
val list_ : ?⁠drop:drop_if_empty -> by:string -> string -> (string * int * int) list

Split the given string along the given separator by. Should only be used with very small separators, otherwise use Containers_string.KMP.

returns

a list of slices (s,index,length) that are separated by by. String.sub can then be used to actually extract a string from the slice.

raises Failure

if by = "".

val gen : ?⁠drop:drop_if_empty -> by:string -> string -> (string * int * int) gen
val seq : ?⁠drop:drop_if_empty -> by:string -> string -> (string * int * int) sequence
val klist : ?⁠drop:drop_if_empty -> by:string -> string -> (string * int * int) klist
Copying functions

Those split functions actually copy the substrings, which can be more convenient but less efficient in general.

val list_cpy : ?⁠drop:drop_if_empty -> by:string -> string -> string list
val gen_cpy : ?⁠drop:drop_if_empty -> by:string -> string -> string gen
val seq_cpy : ?⁠drop:drop_if_empty -> by:string -> string -> string sequence
val klist_cpy : ?⁠drop:drop_if_empty -> by:string -> string -> string klist
val left : by:string -> string -> (string * string) option

Split on the first occurrence of by from the leftmost part of the string.

since
0.12
val left_exn : by:string -> string -> string * string

Split on the first occurrence of by from the leftmost part of the string.

raises Not_found

if by is not part of the string.

since
0.16
val right : by:string -> string -> (string * string) option

Split on the first occurrence of by from the rightmost part of the string.

since
0.12
val right_exn : by:string -> string -> string * string

Split on the first occurrence of by from the rightmost part of the string.

raises Not_found

if by is not part of the string.

since
0.16
\ No newline at end of file diff --git a/dev/containers/CCStringLabels/Sub/index.html b/dev/containers/CCStringLabels/Sub/index.html new file mode 100644 index 00000000..fe562fff --- /dev/null +++ b/dev/containers/CCStringLabels/Sub/index.html @@ -0,0 +1,2 @@ + +Sub (containers.CCStringLabels.Sub)

Module CCStringLabels.Sub

type t = string * int * int

A string, an offset, and the length of the slice.

val make : string -> pos:int -> len:int -> t
val full : string -> t

Full string.

val copy : t -> string

Make a copy of the substring.

val underlying : t -> string
val sub : t -> int -> int -> t

Sub-slice.

val get : t -> int -> char

get s i gets the i-th element, or fails.

raises Invalid_argument

if the index is not within 0 ... length - 1.

since
1.2
include S with type t := t
type t
val length : t -> int

Return the length (number of characters) of the given string.

val blit : src:t -> src_pos:int -> dst:Bytes.t -> dst_pos:int -> len:int -> unit

Like String.blit. Compatible with the -safe-string option.

raises Invalid_argument

if indices are not valid.

val fold : f:('a -> char -> 'a) -> init:'a -> t -> 'a

Fold on chars by increasing index.

since
0.7

Conversions

val to_gen : t -> char gen

Return the gen of characters contained in the string.

val to_seq : t -> char sequence

Return the sequence of characters contained in the string.

val to_klist : t -> char klist

Return the klist of characters contained in the string.

val to_list : t -> char list

Return the list of characters contained in the string.

val pp_buf : Buffer.t -> t -> unit

Renamed from pp since 2.0.

val pp : Format.formatter -> t -> unit

Print the string within quotes.

Renamed from print since 2.0.

\ No newline at end of file diff --git a/dev/containers/CCStringLabels/index.html b/dev/containers/CCStringLabels/index.html new file mode 100644 index 00000000..0d05fae5 --- /dev/null +++ b/dev/containers/CCStringLabels/index.html @@ -0,0 +1,2 @@ + +CCStringLabels (containers.CCStringLabels)

Module CCStringLabels

Basic String Utils

type 'a gen = unit -> 'a option
type 'a sequence = ('a -> unit) -> unit
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]

Common Signature

module type S = sig ... end

Strings

include module type of sig ... end
val length : string -> int
val get : string -> int -> char
val set : bytes -> int -> char -> unit
val create : int -> bytes
val make : int -> char -> string
val init : int -> f:(int -> char) -> string
val copy : string -> string
val sub : string -> pos:int -> len:int -> string
val fill : bytes -> pos:int -> len:int -> char -> unit
val blit : src:string -> src_pos:int -> dst:bytes -> dst_pos:int -> len:int -> unit
val concat : sep:string -> string list -> string
val iter : f:(char -> unit) -> string -> unit
val iteri : f:(int -> char -> unit) -> string -> unit
val map : f:(char -> char) -> string -> string
val mapi : f:(int -> char -> char) -> string -> string
val trim : string -> string
val escaped : string -> string
val index : string -> char -> int
val index_opt : string -> char -> int option
val rindex : string -> char -> int
val rindex_opt : string -> char -> int option
val index_from : string -> int -> char -> int
val index_from_opt : string -> int -> char -> int option
val rindex_from : string -> int -> char -> int
val rindex_from_opt : string -> int -> char -> int option
val contains : string -> char -> bool
val contains_from : string -> int -> char -> bool
val rcontains_from : string -> int -> char -> bool
val uppercase : string -> string
val lowercase : string -> string
val capitalize : string -> string
val uncapitalize : string -> string
val uppercase_ascii : string -> string
val lowercase_ascii : string -> string
val capitalize_ascii : string -> string
val uncapitalize_ascii : string -> string
type t = string
val compare : t -> t -> int
val equal : t -> t -> bool
val split_on_char : sep:char -> string -> string list
val unsafe_get : string -> int -> char
val unsafe_set : bytes -> int -> char -> unit
val unsafe_blit : src:string -> src_pos:int -> dst:bytes -> dst_pos:int -> len:int -> unit
val unsafe_fill : bytes -> pos:int -> len:int -> char -> unit
val equal : string -> string -> bool

Equality function on strings.

val compare : string -> string -> int
val is_empty : string -> bool

is_empty s returns true iff s is empty (i.e. its length is 0).

since
1.5
val hash : string -> int
val init : int -> (int -> char) -> string

Like Array.init.

since
0.3.3
val rev : string -> string

rev s returns the reverse of s.

since
0.17
val pad : ?⁠side:[ `Left | `Right ] -> ?⁠c:char -> int -> string -> string

pad n str ensures that str is at least n bytes long, and pads it on the side with c if it's not the case.

parameter side

determines where padding occurs (default: `Left).

parameter c

the char used to pad (default: ' ').

since
0.17
val of_char : char -> string

of_char 'a' is "a".

since
0.19
val of_gen : char gen -> string

Convert a gen of characters to a string.

val of_seq : char sequence -> string

Convert a sequence of characters to a string.

val of_klist : char klist -> string

Convert a klist of characters to a string.

val of_list : char list -> string

Convert a list of characters to a string.

val of_array : char array -> string

Convert an array of characters to a string.

val to_array : string -> char array

Return the array of characters contained in the string.

val find : ?⁠start:int -> sub:string -> string -> int

Find sub in string, returns its first index or -1.

val find_all : ?⁠start:int -> sub:string -> string -> int gen

find_all ~sub s finds all occurrences of sub in s, even overlapping instances.

parameter start

starting position in s.

since
0.17
val find_all_l : ?⁠start:int -> sub:string -> string -> int list

find_all_l ~sub s finds all occurrences of sub in s and returns them in a list.

parameter start

starting position in s.

since
0.17
val mem : ?⁠start:int -> sub:string -> string -> bool

mem ~sub s is true iff sub is a substring of s.

since
0.12
val rfind : sub:string -> string -> int

Find sub in string from the right, returns its first index or -1. Should only be used with very small sub.

since
0.12
val replace : ?⁠which:[ `Left | `Right | `All ] -> sub:string -> by:string -> string -> string

replace ~sub ~by s replaces some occurrences of sub by by in s.

parameter which

decides whether the occurrences to replace are:

  • `Left first occurrence from the left (beginning).
  • `Right first occurrence from the right (end).
  • `All all occurrences (default).
raises Invalid_argument

if sub = "".

since
0.14
val is_sub : sub:string -> sub_pos:int -> string -> pos:int -> sub_len:int -> bool

is_sub ~sub i s j ~len returns true iff the substring of sub starting at position i and of length len is a substring of s starting at position j.

val repeat : string -> int -> string

The same string, repeated n times.

val prefix : pre:string -> string -> bool

prefix ~pre s returns true iff pre is a prefix of s.

val suffix : suf:string -> string -> bool

suffix ~suf s returns true iff suf is a suffix of s.

since
0.7
val chop_prefix : pre:string -> string -> string option

chop_prefix ~pre s removes pre from s if pre really is a prefix of s, returns None otherwise.

since
0.17
val chop_suffix : suf:string -> string -> string option

chop_suffix ~suf s removes suf from s if suf really is a suffix of s, returns None otherwise.

since
0.17
val take : int -> string -> string

take n s keeps only the n first chars of s.

since
0.17
val drop : int -> string -> string

drop n s removes the n first chars of s.

since
0.17
val take_drop : int -> string -> string * string

take_drop n s = take n s, drop n s.

since
0.17
val lines : string -> string list

lines s returns a list of the lines of s (splits along '\n').

since
0.10
val lines_gen : string -> string gen

lines_gen s returns a generator of the lines of s (splits along '\n').

since
0.10
val concat_gen : sep:string -> string gen -> string

concat_gen ~sep g concatenates all strings of g, separated with sep.

since
0.10
val unlines : string list -> string

unlines l concatenates all strings of l, separated with '\n'.

since
0.10
val unlines_gen : string gen -> string

unlines_gen g concatenates all strings of g, separated with '\n'.

since
0.10
val set : string -> int -> char -> string

set s i c creates a new string which is a copy of s, except for index i, which becomes c.

raises Invalid_argument

if i is an invalid index.

since
0.12
val iter : f:(char -> unit) -> string -> unit

Alias to String.iter.

since
0.12
val iteri : f:(int -> char -> unit) -> string -> unit

Iter on chars with their index.

since
0.12
val map : f:(char -> char) -> string -> string

Map chars.

since
0.12
val mapi : f:(int -> char -> char) -> string -> string

Map chars with their index.

since
0.12
val filter_map : f:(char -> char option) -> string -> string

filter_map f s calls (f a0) (f a1) ... (f an) where a0 ... an are the characters of s. It returns the string of characters ci such as f ai = Some ci (when f returns None, the corresponding element of s is discarded).

since
0.17
val filter : f:(char -> bool) -> string -> string

filter f s discards characters not satisfying f.

since
0.17
val flat_map : ?⁠sep:string -> f:(char -> string) -> string -> string

Map each chars to a string, then concatenates them all.

parameter sep

optional separator between each generated string.

since
0.12
val for_all : f:(char -> bool) -> string -> bool

True for all chars?

since
0.12
val exists : f:(char -> bool) -> string -> bool

True for some char?

since
0.12
include S with type S.t := string
type t
val length : t -> int

Return the length (number of characters) of the given string.

val blit : src:t -> src_pos:int -> dst:Bytes.t -> dst_pos:int -> len:int -> unit

Like String.blit. Compatible with the -safe-string option.

raises Invalid_argument

if indices are not valid.

val fold : f:('a -> char -> 'a) -> init:'a -> t -> 'a

Fold on chars by increasing index.

since
0.7

Conversions

val to_gen : t -> char gen

Return the gen of characters contained in the string.

val to_seq : t -> char sequence

Return the sequence of characters contained in the string.

val to_klist : t -> char klist

Return the klist of characters contained in the string.

val to_list : t -> char list

Return the list of characters contained in the string.

val pp_buf : Buffer.t -> t -> unit

Renamed from pp since 2.0.

val pp : Format.formatter -> t -> unit

Print the string within quotes.

Renamed from print since 2.0.

val drop_while : f:(char -> bool) -> t -> t

drop_while f s discards any characters starting from the left, up to the first character c not satisfying f c.

since
2.2
val rdrop_while : f:(char -> bool) -> t -> t

rdrop_while f s discards any characters starting from the right, up to the first character c not satisfying f c.

since
2.2
val ltrim : t -> t

Trim space on the left (see String.trim for more details).

since
1.2
val rtrim : t -> t

Trim space on the right (see String.trim for more details).

since
1.2

Operations on 2 strings

val map2 : f:(char -> char -> char) -> string -> string -> string

Map pairs of chars.

raises Invalid_argument

if the strings have not the same length.

since
0.12
val iter2 : f:(char -> char -> unit) -> string -> string -> unit

Iterate on pairs of chars.

raises Invalid_argument

if the strings have not the same length.

since
0.12
val iteri2 : f:(int -> char -> char -> unit) -> string -> string -> unit

Iterate on pairs of chars with their index.

raises Invalid_argument

if the strings have not the same length.

since
0.12
val fold2 : f:('a -> char -> char -> 'a) -> init:'a -> string -> string -> 'a

Fold on pairs of chars.

raises Invalid_argument

if the strings have not the same length.

since
0.12
val for_all2 : f:(char -> char -> bool) -> string -> string -> bool

All pairs of chars respect the predicate?

raises Invalid_argument

if the strings have not the same length.

since
0.12
val exists2 : f:(char -> char -> bool) -> string -> string -> bool

Exists a pair of chars?

raises Invalid_argument

if the strings have not the same length.

since
0.12

Ascii functions

Those functions are deprecated in String since 4.03, so we provide a stable alias for them even in older versions.

val capitalize_ascii : string -> string

See String.

since
0.18
val uncapitalize_ascii : string -> string

See String.

since
0.18
val uppercase_ascii : string -> string

See String.

since
0.18
val lowercase_ascii : string -> string

See String.

since
0.18
val equal_caseless : string -> string -> bool

Comparison without respect to ascii lowercase.

since
1.2

Finding

A relatively efficient algorithm for finding sub-strings.

since
1.0
module Find : sig ... end

Splitting

module Split : sig ... end
val split_on_char : by:char -> string -> string list

Split the string along the given char.

since
1.2
val split : by:string -> string -> string list

Alias to Split.list_cpy.

since
1.2

Utils

val compare_versions : string -> string -> int

compare_versions a b compares version strings a and b, considering that numbers are above text.

since
0.13
val compare_natural : string -> string -> int

Natural Sort Order, comparing chunks of digits as natural numbers. https://en.wikipedia.org/wiki/Natural_sort_order

since
1.3
val edit_distance : string -> string -> int

Edition distance between two strings. This satisfies the classical distance axioms: it is always positive, symmetric, and satisfies the formula distance a b + distance b c >= distance a c.

Slices

A contiguous part of a string

module Sub : sig ... end
\ No newline at end of file diff --git a/dev/containers/CCStringLabels/module-type-S/index.html b/dev/containers/CCStringLabels/module-type-S/index.html new file mode 100644 index 00000000..cdff518d --- /dev/null +++ b/dev/containers/CCStringLabels/module-type-S/index.html @@ -0,0 +1,2 @@ + +S (containers.CCStringLabels.S)

Module type CCStringLabels.S

type t
val length : t -> int

Return the length (number of characters) of the given string.

val blit : src:t -> src_pos:int -> dst:Bytes.t -> dst_pos:int -> len:int -> unit

Like String.blit. Compatible with the -safe-string option.

raises Invalid_argument

if indices are not valid.

val fold : f:('a -> char -> 'a) -> init:'a -> t -> 'a

Fold on chars by increasing index.

since
0.7

Conversions

val to_gen : t -> char gen

Return the gen of characters contained in the string.

val to_seq : t -> char sequence

Return the sequence of characters contained in the string.

val to_klist : t -> char klist

Return the klist of characters contained in the string.

val to_list : t -> char list

Return the list of characters contained in the string.

val pp_buf : Buffer.t -> t -> unit

Renamed from pp since 2.0.

val pp : Format.formatter -> t -> unit

Print the string within quotes.

Renamed from print since 2.0.

\ No newline at end of file diff --git a/dev/containers/CCThread/.dune-keep b/dev/containers/CCThread/.dune-keep new file mode 100644 index 00000000..e69de29b diff --git a/dev/containers/CCThread/Arr/index.html b/dev/containers/CCThread/Arr/index.html new file mode 100644 index 00000000..7cc7faef --- /dev/null +++ b/dev/containers/CCThread/Arr/index.html @@ -0,0 +1,2 @@ + +Arr (containers.CCThread.Arr)

Module CCThread.Arr

Array of threads

val spawn : int -> (int -> 'a) -> t array

Arr.spawn n f creates an array res of length n, such that res.(i) = spawn (fun () -> f i).

val join : t array -> unit

Arr.join a joins every thread in a.

\ No newline at end of file diff --git a/dev/containers/CCThread/Barrier/index.html b/dev/containers/CCThread/Barrier/index.html new file mode 100644 index 00000000..7008c04d --- /dev/null +++ b/dev/containers/CCThread/Barrier/index.html @@ -0,0 +1,2 @@ + +Barrier (containers.CCThread.Barrier)

Module CCThread.Barrier

type t

Barrier, used to synchronize threads

val create : unit -> t

Create a barrier.

val reset : t -> unit

Reset to initial (non-triggered) state.

val wait : t -> unit

wait b waits for barrier b to be activated by activate b. All threads calling this wait until activate b is called. If b is already activated, wait b does nothing.

val activate : t -> unit

activate b unblocks all threads that were waiting on b.

val activated : t -> bool

activated b returns true iff activate b was called, and reset b was not called since. In other words, activated b = true means wait b will not block.

\ No newline at end of file diff --git a/dev/containers/CCThread/index.html b/dev/containers/CCThread/index.html new file mode 100644 index 00000000..2403c1f2 --- /dev/null +++ b/dev/containers/CCThread/index.html @@ -0,0 +1,2 @@ + +CCThread (containers.CCThread)

Module CCThread

Threads

status: unstable

since
0.13
type t = Thread.t
val spawn : (unit -> _) -> t

spawn f creates a new thread that runs f ().

val spawn1 : ('a -> _) -> 'a -> t

spawn1 f x is like spawn (fun () -> f x).

since
0.16
val spawn2 : ('a -> 'b -> _) -> 'a -> 'b -> t

spawn2 f x y is like spawn (fun () -> f x y).

since
0.16
val detach : (unit -> 'a) -> unit

detach f is the same as ignore (spawn f).

module Arr : sig ... end

Single-Use Barrier

module Barrier : sig ... end
\ No newline at end of file diff --git a/dev/containers/CCTimer/.dune-keep b/dev/containers/CCTimer/.dune-keep new file mode 100644 index 00000000..e69de29b diff --git a/dev/containers/CCTimer/index.html b/dev/containers/CCTimer/index.html new file mode 100644 index 00000000..0502c3e2 --- /dev/null +++ b/dev/containers/CCTimer/index.html @@ -0,0 +1,2 @@ + +CCTimer (containers.CCTimer)

Module CCTimer

Event timer

Used to be part of CCFuture.

since
0.16
type t

A scheduler for events. It runs in its own thread.

val create : unit -> t

A new timer.

val set_exn_handler : t -> (exn -> unit) -> unit

set_exn_handler timer f registers f so that any exception raised by a task scheduled in timer is given to f.

exception Stopped
val after : t -> float -> f:(unit -> _) -> unit

Call the callback f after the given number of seconds.

raises Stopped

if the timer was stopped.

val at : t -> float -> f:(unit -> _) -> unit

Create a future that evaluates to () at the given Unix timestamp.

raises Stopped

if the timer was stopped.

exception ExitEvery
val every : ?⁠delay:float -> t -> float -> f:(unit -> _) -> unit

every timer n ~f calls f () every n seconds. f() can raise ExitEvery to stop the cycle.

parameter delay

if provided, the first call to f () is delayed by that many seconds.

raises Stopped

if the timer was stopped.

val stop : t -> unit

Stop the given timer, cancelling pending tasks. Idempotent. From now on, calling most other operations on the timer will raise Stopped.

val active : t -> bool

Return true until stop t has been called.

\ No newline at end of file diff --git a/dev/containers/CCTrie/.dune-keep b/dev/containers/CCTrie/.dune-keep new file mode 100644 index 00000000..e69de29b diff --git a/dev/containers/CCTrie/Make/argument-1-W/index.html b/dev/containers/CCTrie/Make/argument-1-W/index.html new file mode 100644 index 00000000..2e40bd54 --- /dev/null +++ b/dev/containers/CCTrie/Make/argument-1-W/index.html @@ -0,0 +1,2 @@ + +1-W (containers.CCTrie.Make.1-W)

Parameter Make.1-W

type t
type char_
val compare : char_ -> char_ -> int
val to_seq : t -> char_ sequence
val of_list : char_ list -> t
\ No newline at end of file diff --git a/dev/containers/CCTrie/Make/index.html b/dev/containers/CCTrie/Make/index.html new file mode 100644 index 00000000..2267e2b5 --- /dev/null +++ b/dev/containers/CCTrie/Make/index.html @@ -0,0 +1,2 @@ + +Make (containers.CCTrie.Make)

Module CCTrie.Make

Parameters

Signature

type char_ = W.char_
type key = W.t
type 'a t
val empty : 'a t
val is_empty : _ t -> bool
val add : key -> 'a -> 'a t -> 'a t

Add a binding to the trie (possibly erasing the previous one).

val remove : key -> 'a t -> 'a t

Remove the key, if present.

val find : key -> 'a t -> 'a option

Find the value associated with the key, if any.

val find_exn : key -> 'a t -> 'a

Same as find but can fail.

raises Not_found

if the key is not present.

val longest_prefix : key -> 'a t -> key

longest_prefix k m finds the longest prefix of k that leads to at least one path in m (it does not mean that the prefix is bound to a value.

Example: if m has keys "abc0" and "abcd", then longest_prefix "abc2" m will return "abc".

since
0.17
val update : key -> ('a option -> 'a option) -> 'a t -> 'a t

Update the binding for the given key. The function is given None if the key is absent, or Some v if key is bound to v; if it returns None the key is removed, otherwise it returns Some y and key becomes bound to y.

val fold : ('b -> key -> 'a -> 'b) -> 'b -> 'a t -> 'b

Fold on key/value bindings. Will use WORD.of_list to rebuild keys.

val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t

Map values, giving both key and value. Will use WORD.of_list to rebuild keys.

since
0.17
val map : ('a -> 'b) -> 'a t -> 'b t

Map values, giving only the value.

since
0.17
val iter : (key -> 'a -> unit) -> 'a t -> unit

Same as fold, but for effectful functions.

val fold_values : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b

More efficient version of fold, that doesn't keep keys.

val iter_values : ('a -> unit) -> 'a t -> unit
val merge : ('a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t

Merge two tries together. The function is used in case of conflicts, when a key belongs to both tries.

val size : _ t -> int

Number of bindings.

Conversions
val to_list : 'a t -> (key * 'a) list
val of_list : (key * 'a) list -> 'a t
val to_seq : 'a t -> (key * 'a) sequence
val of_seq : (key * 'a) sequence -> 'a t
val to_seq_values : 'a t -> 'a sequence
val to_tree : 'a t -> [ `Char of char_ | `Val of 'a | `Switch ] ktree
Ranges
val above : key -> 'a t -> (key * 'a) sequence

All bindings whose key is bigger or equal to the given key, in ascending order.

val below : key -> 'a t -> (key * 'a) sequence

All bindings whose key is smaller or equal to the given key, in decreasing order.

\ No newline at end of file diff --git a/dev/containers/CCTrie/MakeArray/argument-1-X/index.html b/dev/containers/CCTrie/MakeArray/argument-1-X/index.html new file mode 100644 index 00000000..c69337b7 --- /dev/null +++ b/dev/containers/CCTrie/MakeArray/argument-1-X/index.html @@ -0,0 +1,2 @@ + +1-X (containers.CCTrie.MakeArray.1-X)

Parameter MakeArray.1-X

type t
val compare : t -> t -> int
\ No newline at end of file diff --git a/dev/containers/CCTrie/MakeArray/index.html b/dev/containers/CCTrie/MakeArray/index.html new file mode 100644 index 00000000..30df6ca6 --- /dev/null +++ b/dev/containers/CCTrie/MakeArray/index.html @@ -0,0 +1,2 @@ + +MakeArray (containers.CCTrie.MakeArray)

Module CCTrie.MakeArray

Parameters

Signature

type char_ = X.t
type key = X.t array
type 'a t
val empty : 'a t
val is_empty : _ t -> bool
val add : key -> 'a -> 'a t -> 'a t

Add a binding to the trie (possibly erasing the previous one).

val remove : key -> 'a t -> 'a t

Remove the key, if present.

val find : key -> 'a t -> 'a option

Find the value associated with the key, if any.

val find_exn : key -> 'a t -> 'a

Same as find but can fail.

raises Not_found

if the key is not present.

val longest_prefix : key -> 'a t -> key

longest_prefix k m finds the longest prefix of k that leads to at least one path in m (it does not mean that the prefix is bound to a value.

Example: if m has keys "abc0" and "abcd", then longest_prefix "abc2" m will return "abc".

since
0.17
val update : key -> ('a option -> 'a option) -> 'a t -> 'a t

Update the binding for the given key. The function is given None if the key is absent, or Some v if key is bound to v; if it returns None the key is removed, otherwise it returns Some y and key becomes bound to y.

val fold : ('b -> key -> 'a -> 'b) -> 'b -> 'a t -> 'b

Fold on key/value bindings. Will use WORD.of_list to rebuild keys.

val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t

Map values, giving both key and value. Will use WORD.of_list to rebuild keys.

since
0.17
val map : ('a -> 'b) -> 'a t -> 'b t

Map values, giving only the value.

since
0.17
val iter : (key -> 'a -> unit) -> 'a t -> unit

Same as fold, but for effectful functions.

val fold_values : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b

More efficient version of fold, that doesn't keep keys.

val iter_values : ('a -> unit) -> 'a t -> unit
val merge : ('a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t

Merge two tries together. The function is used in case of conflicts, when a key belongs to both tries.

val size : _ t -> int

Number of bindings.

Conversions
val to_list : 'a t -> (key * 'a) list
val of_list : (key * 'a) list -> 'a t
val to_seq : 'a t -> (key * 'a) sequence
val of_seq : (key * 'a) sequence -> 'a t
val to_seq_values : 'a t -> 'a sequence
val to_tree : 'a t -> [ `Char of char_ | `Val of 'a | `Switch ] ktree
Ranges
val above : key -> 'a t -> (key * 'a) sequence

All bindings whose key is bigger or equal to the given key, in ascending order.

val below : key -> 'a t -> (key * 'a) sequence

All bindings whose key is smaller or equal to the given key, in decreasing order.

\ No newline at end of file diff --git a/dev/containers/CCTrie/MakeList/argument-1-X/index.html b/dev/containers/CCTrie/MakeList/argument-1-X/index.html new file mode 100644 index 00000000..ef216e37 --- /dev/null +++ b/dev/containers/CCTrie/MakeList/argument-1-X/index.html @@ -0,0 +1,2 @@ + +1-X (containers.CCTrie.MakeList.1-X)

Parameter MakeList.1-X

type t
val compare : t -> t -> int
\ No newline at end of file diff --git a/dev/containers/CCTrie/MakeList/index.html b/dev/containers/CCTrie/MakeList/index.html new file mode 100644 index 00000000..a6c7d223 --- /dev/null +++ b/dev/containers/CCTrie/MakeList/index.html @@ -0,0 +1,2 @@ + +MakeList (containers.CCTrie.MakeList)

Module CCTrie.MakeList

Parameters

Signature

type char_ = X.t
type key = X.t list
type 'a t
val empty : 'a t
val is_empty : _ t -> bool
val add : key -> 'a -> 'a t -> 'a t

Add a binding to the trie (possibly erasing the previous one).

val remove : key -> 'a t -> 'a t

Remove the key, if present.

val find : key -> 'a t -> 'a option

Find the value associated with the key, if any.

val find_exn : key -> 'a t -> 'a

Same as find but can fail.

raises Not_found

if the key is not present.

val longest_prefix : key -> 'a t -> key

longest_prefix k m finds the longest prefix of k that leads to at least one path in m (it does not mean that the prefix is bound to a value.

Example: if m has keys "abc0" and "abcd", then longest_prefix "abc2" m will return "abc".

since
0.17
val update : key -> ('a option -> 'a option) -> 'a t -> 'a t

Update the binding for the given key. The function is given None if the key is absent, or Some v if key is bound to v; if it returns None the key is removed, otherwise it returns Some y and key becomes bound to y.

val fold : ('b -> key -> 'a -> 'b) -> 'b -> 'a t -> 'b

Fold on key/value bindings. Will use WORD.of_list to rebuild keys.

val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t

Map values, giving both key and value. Will use WORD.of_list to rebuild keys.

since
0.17
val map : ('a -> 'b) -> 'a t -> 'b t

Map values, giving only the value.

since
0.17
val iter : (key -> 'a -> unit) -> 'a t -> unit

Same as fold, but for effectful functions.

val fold_values : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b

More efficient version of fold, that doesn't keep keys.

val iter_values : ('a -> unit) -> 'a t -> unit
val merge : ('a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t

Merge two tries together. The function is used in case of conflicts, when a key belongs to both tries.

val size : _ t -> int

Number of bindings.

Conversions
val to_list : 'a t -> (key * 'a) list
val of_list : (key * 'a) list -> 'a t
val to_seq : 'a t -> (key * 'a) sequence
val of_seq : (key * 'a) sequence -> 'a t
val to_seq_values : 'a t -> 'a sequence
val to_tree : 'a t -> [ `Char of char_ | `Val of 'a | `Switch ] ktree
Ranges
val above : key -> 'a t -> (key * 'a) sequence

All bindings whose key is bigger or equal to the given key, in ascending order.

val below : key -> 'a t -> (key * 'a) sequence

All bindings whose key is smaller or equal to the given key, in decreasing order.

\ No newline at end of file diff --git a/dev/containers/CCTrie/String/index.html b/dev/containers/CCTrie/String/index.html new file mode 100644 index 00000000..37cda0be --- /dev/null +++ b/dev/containers/CCTrie/String/index.html @@ -0,0 +1,2 @@ + +String (containers.CCTrie.String)

Module CCTrie.String

type char_ = char
type key = string
type 'a t
val empty : 'a t
val is_empty : _ t -> bool
val add : key -> 'a -> 'a t -> 'a t

Add a binding to the trie (possibly erasing the previous one).

val remove : key -> 'a t -> 'a t

Remove the key, if present.

val find : key -> 'a t -> 'a option

Find the value associated with the key, if any.

val find_exn : key -> 'a t -> 'a

Same as find but can fail.

raises Not_found

if the key is not present.

val longest_prefix : key -> 'a t -> key

longest_prefix k m finds the longest prefix of k that leads to at least one path in m (it does not mean that the prefix is bound to a value.

Example: if m has keys "abc0" and "abcd", then longest_prefix "abc2" m will return "abc".

since
0.17
val update : key -> ('a option -> 'a option) -> 'a t -> 'a t

Update the binding for the given key. The function is given None if the key is absent, or Some v if key is bound to v; if it returns None the key is removed, otherwise it returns Some y and key becomes bound to y.

val fold : ('b -> key -> 'a -> 'b) -> 'b -> 'a t -> 'b

Fold on key/value bindings. Will use WORD.of_list to rebuild keys.

val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t

Map values, giving both key and value. Will use WORD.of_list to rebuild keys.

since
0.17
val map : ('a -> 'b) -> 'a t -> 'b t

Map values, giving only the value.

since
0.17
val iter : (key -> 'a -> unit) -> 'a t -> unit

Same as fold, but for effectful functions.

val fold_values : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b

More efficient version of fold, that doesn't keep keys.

val iter_values : ('a -> unit) -> 'a t -> unit
val merge : ('a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t

Merge two tries together. The function is used in case of conflicts, when a key belongs to both tries.

val size : _ t -> int

Number of bindings.

Conversions
val to_list : 'a t -> (key * 'a) list
val of_list : (key * 'a) list -> 'a t
val to_seq : 'a t -> (key * 'a) sequence
val of_seq : (key * 'a) sequence -> 'a t
val to_seq_values : 'a t -> 'a sequence
val to_tree : 'a t -> [ `Char of char_ | `Val of 'a | `Switch ] ktree
Ranges
val above : key -> 'a t -> (key * 'a) sequence

All bindings whose key is bigger or equal to the given key, in ascending order.

val below : key -> 'a t -> (key * 'a) sequence

All bindings whose key is smaller or equal to the given key, in decreasing order.

\ No newline at end of file diff --git a/dev/containers/CCTrie/index.html b/dev/containers/CCTrie/index.html new file mode 100644 index 00000000..cfb7fdd1 --- /dev/null +++ b/dev/containers/CCTrie/index.html @@ -0,0 +1,2 @@ + +CCTrie (containers.CCTrie)

Module CCTrie

Prefix Tree

type 'a sequence = ('a -> unit) -> unit
type 'a ktree = unit -> [ `Nil | `Node of 'a * 'a ktree list ]

Signatures

A Composite Word

Words are made of characters, who belong to a total order

module type WORD = sig ... end
module type S = sig ... end

Implementation

module Make : functor (W : WORD) -> S with type key = W.t and type char_ = W.char_
module type ORDERED = sig ... end
module MakeArray : functor (X : ORDERED) -> S with type key = X.t array and type char_ = X.t
module MakeList : functor (X : ORDERED) -> S with type key = X.t list and type char_ = X.t
module String : S with type key = string and type char_ = char
\ No newline at end of file diff --git a/dev/containers/CCTrie/module-type-ORDERED/index.html b/dev/containers/CCTrie/module-type-ORDERED/index.html new file mode 100644 index 00000000..eadd1219 --- /dev/null +++ b/dev/containers/CCTrie/module-type-ORDERED/index.html @@ -0,0 +1,2 @@ + +ORDERED (containers.CCTrie.ORDERED)

Module type CCTrie.ORDERED

type t
val compare : t -> t -> int
\ No newline at end of file diff --git a/dev/containers/CCTrie/module-type-S/index.html b/dev/containers/CCTrie/module-type-S/index.html new file mode 100644 index 00000000..84f5a8f9 --- /dev/null +++ b/dev/containers/CCTrie/module-type-S/index.html @@ -0,0 +1,2 @@ + +S (containers.CCTrie.S)

Module type CCTrie.S

type char_
type key
type 'a t
val empty : 'a t
val is_empty : _ t -> bool
val add : key -> 'a -> 'a t -> 'a t

Add a binding to the trie (possibly erasing the previous one).

val remove : key -> 'a t -> 'a t

Remove the key, if present.

val find : key -> 'a t -> 'a option

Find the value associated with the key, if any.

val find_exn : key -> 'a t -> 'a

Same as find but can fail.

raises Not_found

if the key is not present.

val longest_prefix : key -> 'a t -> key

longest_prefix k m finds the longest prefix of k that leads to at least one path in m (it does not mean that the prefix is bound to a value.

Example: if m has keys "abc0" and "abcd", then longest_prefix "abc2" m will return "abc".

since
0.17
val update : key -> ('a option -> 'a option) -> 'a t -> 'a t

Update the binding for the given key. The function is given None if the key is absent, or Some v if key is bound to v; if it returns None the key is removed, otherwise it returns Some y and key becomes bound to y.

val fold : ('b -> key -> 'a -> 'b) -> 'b -> 'a t -> 'b

Fold on key/value bindings. Will use WORD.of_list to rebuild keys.

val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t

Map values, giving both key and value. Will use WORD.of_list to rebuild keys.

since
0.17
val map : ('a -> 'b) -> 'a t -> 'b t

Map values, giving only the value.

since
0.17
val iter : (key -> 'a -> unit) -> 'a t -> unit

Same as fold, but for effectful functions.

val fold_values : ('b -> 'a -> 'b) -> 'b -> 'a t -> 'b

More efficient version of fold, that doesn't keep keys.

val iter_values : ('a -> unit) -> 'a t -> unit
val merge : ('a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t

Merge two tries together. The function is used in case of conflicts, when a key belongs to both tries.

val size : _ t -> int

Number of bindings.

Conversions
val to_list : 'a t -> (key * 'a) list
val of_list : (key * 'a) list -> 'a t
val to_seq : 'a t -> (key * 'a) sequence
val of_seq : (key * 'a) sequence -> 'a t
val to_seq_values : 'a t -> 'a sequence
val to_tree : 'a t -> [ `Char of char_ | `Val of 'a | `Switch ] ktree
Ranges
val above : key -> 'a t -> (key * 'a) sequence

All bindings whose key is bigger or equal to the given key, in ascending order.

val below : key -> 'a t -> (key * 'a) sequence

All bindings whose key is smaller or equal to the given key, in decreasing order.

\ No newline at end of file diff --git a/dev/containers/CCTrie/module-type-WORD/index.html b/dev/containers/CCTrie/module-type-WORD/index.html new file mode 100644 index 00000000..94268d9d --- /dev/null +++ b/dev/containers/CCTrie/module-type-WORD/index.html @@ -0,0 +1,2 @@ + +WORD (containers.CCTrie.WORD)

Module type CCTrie.WORD

type t
type char_
val compare : char_ -> char_ -> int
val to_seq : t -> char_ sequence
val of_list : char_ list -> t
\ No newline at end of file diff --git a/dev/containers/CCUnix/.dune-keep b/dev/containers/CCUnix/.dune-keep new file mode 100644 index 00000000..e69de29b diff --git a/dev/containers/CCUnix/Infix/index.html b/dev/containers/CCUnix/Infix/index.html new file mode 100644 index 00000000..b6725296 --- /dev/null +++ b/dev/containers/CCUnix/Infix/index.html @@ -0,0 +1,2 @@ + +Infix (containers.CCUnix.Infix)

Module CCUnix.Infix

val (?|) : ('a, Buffer.t, unit, call_result) Pervasives.format4 -> 'a

Infix version of call.

since
0.11
val (?|&) : ('a, Buffer.t, unit, async_call_result) Pervasives.format4 -> 'a

Infix version of async_call.

since
0.11
\ No newline at end of file diff --git a/dev/containers/CCUnix/index.html b/dev/containers/CCUnix/index.html new file mode 100644 index 00000000..e6739d5b --- /dev/null +++ b/dev/containers/CCUnix/index.html @@ -0,0 +1,2 @@ + +CCUnix (containers.CCUnix)

Module CCUnix

High-level Functions on top of Unix

Some useful functions built on top of Unix.

status: unstable

since
0.10
type 'a or_error = ('a, string) Result.result
type 'a gen = unit -> 'a option

Calling Commands

val escape_str : string -> string

Escape a string so it can be a shell argument.

type call_result = < stdout : string; stderr : string; status : Unix.process_status; errcode : int; >
val call_full : ?⁠bufsize:int -> ?⁠stdin:[ `Gen of string gen | `Str of string ] -> ?⁠env:string array -> ('a, Buffer.t, unit, call_result) Pervasives.format4 -> 'a

call_full cmd wraps the result of Unix.open_process_full cmd into an object. It reads the full stdout and stderr of the subprocess before returning.

parameter stdin

if provided, the generator or string is consumed and fed to the subprocess input channel, which is then closed.

parameter bufsize

buffer size used to read stdout and stderr.

parameter env

environment to run the command in.

val call : ?⁠bufsize:int -> ?⁠stdin:[ `Gen of string gen | `Str of string ] -> ?⁠env:string array -> ('a, Buffer.t, unit, string * string * int) Pervasives.format4 -> 'a

call cmd is similar to call_full cmd but returns a tuple stdout, stderr, errcode instead of an object.

val call_stdout : ?⁠bufsize:int -> ?⁠stdin:[ `Gen of string gen | `Str of string ] -> ?⁠env:string array -> ('a, Buffer.t, unit, string) Pervasives.format4 -> 'a
type line = string
type async_call_result = < stdout : line gen; stderr : line gen; stdin : line -> unit; close_in : unit; close_err : unit; close_out : unit; close_all : unit; wait : Unix.process_status; wait_errcode : int; >

A subprocess for interactive usage (read/write channels line by line)

since
0.11
val async_call : ?⁠env:string array -> ('a, Buffer.t, unit, async_call_result) Pervasives.format4 -> 'a

Spawns a subprocess, like call, but the subprocess's channels are line generators and line sinks (for stdin). If p is async_call "cmd", then p#wait waits for the subprocess to die. Channels can be closed independently.

since
0.11

Accessors

since
0.11
val stdout : < stdout : 'a; .. > -> 'a
val stderr : < stderr : 'a; .. > -> 'a
val status : < status : 'a; .. > -> 'a
val errcode : < errcode : 'a; .. > -> 'a

Simple IO

val with_in : ?⁠mode:int -> ?⁠flags:Unix.open_flag list -> string -> f:(Pervasives.in_channel -> 'a) -> 'a

Open an input file with the given optional flag list, calls the function on the input channel. When the function raises or returns, the channel is closed.

parameter flags

opening flags. Unix.O_RDONLY is used in any cases.

since
0.16
val with_out : ?⁠mode:int -> ?⁠flags:Unix.open_flag list -> string -> f:(Pervasives.out_channel -> 'a) -> 'a

Same as with_in but for an output channel.

parameter flags

opening flags (default [Unix.O_CREAT; Unix.O_TRUNC]) Unix.O_WRONLY is used in any cases.

since
0.16
val with_process_in : string -> f:(Pervasives.in_channel -> 'a) -> 'a

Open a subprocess and obtain a handle to its stdout.

CCUnix.with_process_in "ls /tmp" ~f:CCIO.read_lines_l;;
since
0.16
val with_process_out : string -> f:(Pervasives.out_channel -> 'a) -> 'a

Open a subprocess and obtain a handle to its stdin.

since
0.16
type process_full = < stdin : Pervasives.out_channel; stdout : Pervasives.in_channel; stderr : Pervasives.in_channel; close : Unix.process_status; >

Handle to a subprocess.

since
0.16
val with_process_full : ?⁠env:string array -> string -> f:(process_full -> 'a) -> 'a

Open a subprocess and obtain a handle to its channels.

parameter env

environment to pass to the subprocess.

since
0.16
val with_connection : Unix.sockaddr -> f:(Pervasives.in_channel -> Pervasives.out_channel -> 'a) -> 'a

Wrap Unix.open_connection with a handler.

since
0.16
exception ExitServer
val establish_server : Unix.sockaddr -> f:(Pervasives.in_channel -> Pervasives.out_channel -> _) -> unit

Listen on the address and calls the handler in a blocking fashion. Using Thread is recommended if handlers might take time. The callback should raise ExitServer to stop the loop.

since
0.16
val with_file_lock : kind:[ `Read | `Write ] -> string -> (unit -> 'a) -> 'a

with_file_lock ~kind filename f puts a lock on the offset 0 of the file named filename, calls f and returns its result after the file is unlocked. If f () raises an exception the exception is re-raised after the file is unlocked.

parameter kind

specifies whether the lock is read-only or read-write.

since
1.2

Infix Functions

module Infix : sig ... end
include module type of Infix
val (?|) : ('a, Buffer.t, unit, call_result) Pervasives.format4 -> 'a

Infix version of call.

since
0.11
val (?|&) : ('a, Buffer.t, unit, async_call_result) Pervasives.format4 -> 'a

Infix version of async_call.

since
0.11
\ No newline at end of file diff --git a/dev/containers/CCUtf8_string.odoc b/dev/containers/CCUtf8_string.odoc deleted file mode 100644 index 4bd9bdec365c1434b76351866b9d691ccc457ccf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2434 zcmb_eTWl0n7~b8?2=zihL%bSWSga8q9i9i_nJ_TRA|6GKhy7q*V@pd1wddvo>N{Si znLW5~TXEgQTUT#gKD_S5(z!9xKut0hOAN+hV{XDj#>Qf)82evlv_#0*@n(~SPj+~Y zMT*#H7aki7$1^%s<>s2Esf}eUy{Ky2*blSs?42|3+=8CmsSRhZ=$yUq*Bh3LGm4v%QD6k2~Ie zq-*gbzpYw*X3ss~Ndm&`)XD8{rEbTM0+3kS4utZgxC%QaBcY2b|&Y*AcfJBRwUMKh~HB{R(-(+vCe@6cvU zrx0av+Lr9ZUZ~wS#8@~T!EQKc_J!f@RMm5+cuSKCb%>{q1<9!k@P;b(EF5aJqnU#y z7y-IAjZ-xv^76`b3TY1;n?;5VRb!y1IpogL(T2%(4II+KnP45cp|)IT>DTsXQ%v!y z=~7&Q5LaURQY93WLaiXr9}wqBNWDD%q}C$k3i3hd28l>2OSMAbL^y<(k=XO~l&CJ@cdBnKVvjnsx5-rK=LCAK$=)3LQ2V2P8FINjT;%8) zV|b~eU?6IALVoKvI9w{xDgyCrCFn=gnevK0&bB{4O+rR5d#C7ohuJ_a6EUsUR`4|zec|vpQN4U zO5km(c0r2K;}3H+Py}4f!gf^*cV5d@rR6=PWuEq(h)OEb(Oe5UTqh9aHGe6*+<6fP zm58snh}|jfO^A3l5`j}Taf_iIPmT)Xm%tM3Aj|Fr-Wj9TfATd?tRCN%a-h_J-ZF~* zyP)%YY~pV9_Zw31birlh&oA96 z)Iu+X*#^|?2vzKju+oxszha$8mQe)+y~^*$1%51kk48@BOZd|YeqomFxF91hS-T_F zX$jlHxQVmF5?9IXHH!Ujo$Vs3xJM%HuM&hKmyTS^k)S8;N~1~zdpsj2g+x8x9YIwz zUy}9{lhZJDEkptOlY+jct|h8okH2n8<2x0jAx&&i`Fi{>dH)+sBxsrf?pMGC9LO71 zkKa_LGZG1*6^x?_xx5yTqKNgxz0&4&iCn0VrxY^Z$eoMtWgc&ov!HP`a-AZgI2tI0 zUc)M3s|z~YaH!z~MmI-@(F=p&V7Ap08+qh+R?9HF_*immF%qP0&hZGnjTZ&*lGJ`t zDeA5tRwSyZ9og9EhN^>425&|7K?wOxn(+A;si<4RMq;+SHEsO-EjA_HD3Etzlu2H~-kDLG(hwqn2NtF-5?EVkK{laSi diff --git a/dev/containers/CCUtf8_string/.dune-keep b/dev/containers/CCUtf8_string/.dune-keep new file mode 100644 index 00000000..e69de29b diff --git a/dev/containers/CCUtf8_string/index.html b/dev/containers/CCUtf8_string/index.html index 8c441678..c6484d4b 100644 --- a/dev/containers/CCUtf8_string/index.html +++ b/dev/containers/CCUtf8_string/index.html @@ -1,2 +1,2 @@ -CCUtf8_string (containers.CCUtf8_string)

Module CCUtf8_string

Unicode String, in UTF8

type uchar = Uchar.t
type 'a gen = unit -> 'a option
type 'a sequence = ('a -> unit) -> unit
type t = private string

A UTF8 string

val equal : t -> t -> bool
val hash : t -> int
val compare : t -> t -> int
val pp : Format.formatter -> t -> unit
val to_string : t -> string

Identity.

exception Malformed of string * int

Malformed string at given offset

val to_gen : ?⁠idx:int -> t -> uchar gen

Generator of unicode codepoints.

parameter idx

offset where to start the decoding.

val to_seq : ?⁠idx:int -> t -> uchar sequence

Iter of unicode codepoints.

parameter idx

offset where to start the decoding.

val to_list : ?⁠idx:int -> t -> uchar list

List of unicode codepoints.

parameter idx

offset where to start the decoding.

val fold : ?⁠idx:int -> ('a -> uchar -> 'a) -> 'a -> t -> 'a
val iter : ?⁠idx:int -> (uchar -> unit) -> t -> unit
val n_chars : t -> int

Number of characters.

val n_bytes : t -> int

Number of bytes.

val map : (uchar -> uchar) -> t -> t
val filter_map : (uchar -> uchar option) -> t -> t
val flat_map : (uchar -> t) -> t -> t
val append : t -> t -> t
val concat : t -> t list -> t
val of_seq : uchar sequence -> t
val of_gen : uchar gen -> t
val of_list : uchar list -> t
val of_string_exn : string -> t

Validate string by checking it is valid UTF8.

raises Invalid_argument

if the string is not valid UTF8.

val of_string : string -> t option

Safe version of of_string_exn.

val is_valid : string -> bool

Valid UTF8?

val unsafe_of_string : string -> t

Conversion from a string without validating. Upon iteration, if an invalid substring is met, Malformed will be raised.

\ No newline at end of file +CCUtf8_string (containers.CCUtf8_string)

Module CCUtf8_string

Unicode String, in UTF8

type uchar = Uchar.t
type 'a gen = unit -> 'a option
type 'a sequence = ('a -> unit) -> unit
type t = private string

A UTF8 string

val equal : t -> t -> bool
val hash : t -> int
val compare : t -> t -> int
val pp : Format.formatter -> t -> unit
val to_string : t -> string

Identity.

exception Malformed of string * int

Malformed string at given offset

val to_gen : ?⁠idx:int -> t -> uchar gen

Generator of unicode codepoints.

parameter idx

offset where to start the decoding.

val to_seq : ?⁠idx:int -> t -> uchar sequence

Iter of unicode codepoints.

parameter idx

offset where to start the decoding.

val to_list : ?⁠idx:int -> t -> uchar list

List of unicode codepoints.

parameter idx

offset where to start the decoding.

val fold : ?⁠idx:int -> ('a -> uchar -> 'a) -> 'a -> t -> 'a
val iter : ?⁠idx:int -> (uchar -> unit) -> t -> unit
val n_chars : t -> int

Number of characters.

val n_bytes : t -> int

Number of bytes.

val map : (uchar -> uchar) -> t -> t
val filter_map : (uchar -> uchar option) -> t -> t
val flat_map : (uchar -> t) -> t -> t
val append : t -> t -> t
val concat : t -> t list -> t
val of_seq : uchar sequence -> t
val of_gen : uchar gen -> t
val of_list : uchar list -> t
val of_string_exn : string -> t

Validate string by checking it is valid UTF8.

raises Invalid_argument

if the string is not valid UTF8.

val of_string : string -> t option

Safe version of of_string_exn.

val is_valid : string -> bool

Valid UTF8?

val unsafe_of_string : string -> t

Conversion from a string without validating. Upon iteration, if an invalid substring is met, Malformed will be raised.

\ No newline at end of file diff --git a/dev/containers/CCVector.odoc b/dev/containers/CCVector.odoc deleted file mode 100644 index 4df107a06717e3ec2555cd812b98832ff6f50999..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10041 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 YIjvmsQ6+sY;6{Ej%6wLWmCNP-1($^!eE -CCVector (containers.CCVector)

Module CCVector

Growable, mutable vector

type ro = [
| `RO
]
type rw = [
| `RW
]
type ('a, 'mut) t

The type of a vector of elements of type 'a, with a mutability flat 'mut.

type 'a vector = ('arw) t

Type synonym: a 'a vector is mutable.

type 'a ro_vector = ('aro) t

Alias for immutable vectors.

since
0.15
type 'a sequence = ('a -> unit) -> unit
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a gen = unit -> 'a option
type 'a equal = 'a -> 'a -> bool
type 'a ord = 'a -> 'a -> int
type 'a printer = Format.formatter -> 'a -> unit
val freeze : ('a_) t -> ('aro) t

Make an immutable vector (no copy! Don't use the old version).

val freeze_copy : ('a_) t -> ('aro) t

Copy the vector into an immutable version.

val create : unit -> ('arw) t

Create a new, empty vector.

val create_with : ?⁠capacity:int -> 'a -> ('arw) t

Create a new vector, using the given value as a filler.

parameter capacity

the size of the underlying array. caution: the value will likely not be GC'd before the vector is.

val return : 'a -> ('a'mut) t

Singleton vector.

since
0.14
val make : int -> 'a -> ('a'mut) t

make n x makes a vector of size n, filled with x.

val init : int -> (int -> 'a) -> ('a'mut) t

Init the vector with the given function and size.

val clear : ('arw) t -> unit

Clear the content of the vector.

val ensure_with : init:'a -> ('arw) t -> int -> unit

Hint to the vector that it should have at least the given capacity.

parameter init

if capacity v = 0, used as a filler element for the underlying array (see create_with).

since
0.14
val ensure : ('arw) t -> int -> unit

Hint to the vector that it should have at least the given capacity. Just a hint, will not be enforced if the vector is empty and init is not provided.

val is_empty : ('a_) t -> bool

Is the vector empty?

val push : ('arw) t -> 'a -> unit

Add an element at the end of the vector.

val append : ('arw) t -> ('a_) t -> unit

append a b adds all elements of b to a.

val append_array : ('arw) t -> 'a array -> unit

Like append, with an array.

val append_seq : ('arw) t -> 'a sequence -> unit

Append content of sequence.

val append_list : ('arw) t -> 'a list -> unit

Append content of list.

since
0.14
val append_gen : ('arw) t -> 'a gen -> unit

Append content of generator.

since
0.20
val equal : 'a equal -> ('a_) t equal
val compare : 'a ord -> ('a_) t ord

Total ordering on vectors. Lexicographic comparison.

exception Empty

Raised on empty stack.

val pop : ('arw) t -> 'a option

Remove last element, or None.

val pop_exn : ('arw) t -> 'a

Remove last element, or raise a Failure if empty.

raises Empty

on an empty vector.

val top : ('a_) t -> 'a option

Top element, if present.

since
0.6
val top_exn : ('a_) t -> 'a

Top element, if present.

raises Empty

on an empty vector.

since
0.6
val copy : ('a_) t -> ('a'mut) t

Shallow copy (may give an immutable or mutable vector).

val shrink : ('arw) t -> int -> unit

Shrink to the given size (remove elements above this size). Does nothing if the parameter is bigger than the current size.

val member : eq:('a -> 'a -> bool) -> 'a -> ('a_) t -> bool

Is the element a member of the vector?

val sort : ('a -> 'a -> int) -> ('a_) t -> ('a'mut) t

Sort the vector, returning a copy of it that is sorted w.r.t the given ordering. The vector itself is unchanged.

val sort' : ('a -> 'a -> int) -> ('arw) t -> unit

Sort the vector in place (modifying it).

val uniq_sort : ('a -> 'a -> int) -> ('arw) t -> unit

Sort the array and remove duplicates, in place (e.g. modifying the vector itself).

val iter : ('a -> unit) -> ('a_) t -> unit

Iterate on the vector's content.

val iteri : (int -> 'a -> unit) -> ('a_) t -> unit

Iterate on the vector, with indexes.

val map : ('a -> 'b) -> ('a_) t -> ('b'mut) t

Map elements of the vector, yielding a new vector.

val map_in_place : ('a -> 'a) -> ('a_) t -> unit

Map elements of the vector in place

since
2.3
val filter : ('a -> bool) -> ('a_) t -> ('a'mut) t

Filter elements from the vector. filter p v leaves v unchanged but returns a new vector that only contains elements of v satisfying p.

val filter' : ('a -> bool) -> ('arw) t -> unit

Filter elements in place.

val fold : ('b -> 'a -> 'b) -> 'b -> ('a_) t -> 'b

Fold on elements of the vector

val exists : ('a -> bool) -> ('a_) t -> bool

Existential test (is there an element that satisfies the predicate?).

val for_all : ('a -> bool) -> ('a_) t -> bool

Universal test (do all the elements satisfy the predicate?).

val find : ('a -> bool) -> ('a_) t -> 'a option

Find an element that satisfies the predicate.

val find_exn : ('a -> bool) -> ('a_) t -> 'a

Find an element that satisfies the predicate, or

raises Not_found

if no element does.

val find_map : ('a -> 'b option) -> ('a_) t -> 'b option

find_map f v returns the first Some y = f x for x in v, or None if f x = None for each x in v.

since
0.14
val filter_map : ('a -> 'b option) -> ('a_) t -> ('b'mut) t

Map elements with a function, possibly filtering some of them out.

val filter_map_in_place : ('a -> 'a option) -> ('a_) t -> unit

Filter-map elements of the vector in place

since
2.3
val flat_map : ('a -> ('b_) t) -> ('a_) t -> ('b'mut) t

Map each element to a sub-vector.

val flat_map_seq : ('a -> 'b sequence) -> ('a_) t -> ('b'mut) t

Like flat_map, but using sequence for intermediate collections.

since
0.14
val flat_map_list : ('a -> 'b list) -> ('a_) t -> ('b'mut) t

Like flat_map, but using list for intermediate collections.

since
0.14
val (>>=) : ('a_) t -> ('a -> ('b_) t) -> ('b'mut) t

Infix version of flat_map.

val (>|=) : ('a_) t -> ('a -> 'b) -> ('b'mut) t

Infix version of map.

val get : ('a_) t -> int -> 'a

Access element by its index, or

raises Invalid_argument

if bad index.

val set : ('arw) t -> int -> 'a -> unit

Modify element at given index, or

raises Invalid_argument

if bad index.

val remove : ('arw) t -> int -> unit

Remove the n-th element of the vector. Does NOT preserve the order of the elements (might swap with the last element).

val rev : ('a_) t -> ('a'mut) t

Reverse the vector.

val rev_in_place : ('arw) t -> unit

Reverse the vector in place.

since
0.14
val rev_iter : ('a -> unit) -> ('a_) t -> unit

rev_iter f a is the same as iter f (rev a), only more efficient.

since
0.14
val size : ('a_) t -> int

Number of elements in the vector.

val length : (__) t -> int

Synonym for size.

val capacity : (__) t -> int

Number of elements the vector can contain without being resized.

val unsafe_get_array : ('arw) t -> 'a array

Access the underlying shared array (do not modify!). unsafe_get_array v is longer than size v, but elements at higher index than size v are undefined (do not access!).

val (--) : int -> int -> (int, 'mut) t

Range of integers, either ascending or descending (both included, therefore the result is never empty). Example: 1 -- 10 returns the vector [1;2;3;4;5;6;7;8;9;10].

val (--^) : int -> int -> (int, 'mut) t

Range of integers, either ascending or descending, but excluding right. Example: 1 --^ 10 returns the vector [1;2;3;4;5;6;7;8;9].

since
0.17
val of_array : 'a array -> ('a'mut) t

of_array a returns a vector corresponding to the array a. Operates in O(n) time.

val of_list : 'a list -> ('a'mut) t
val to_array : ('a_) t -> 'a array

to_array v returns an array corresponding to the vector v.

val to_list : ('a_) t -> 'a list

Return a list with the elements contained in the vector.

val of_seq : ?⁠init:('arw) t -> 'a sequence -> ('arw) t
val to_seq : ('a_) t -> 'a sequence

Return a sequence with the elements contained in the vector.

val to_seq_rev : ('a_) t -> 'a sequence

to_seq_rev v returns the sequence of elements of v in reverse order, that is, the last elements of v are iterated on first.

since
0.14
val slice : ('arw) t -> 'a array * int * int

Vector as an array slice. By doing it we expose the internal array, so be careful!.

val slice_seq : ('a_) t -> int -> int -> 'a sequence

slice_seq v start len is the sequence of elements from v.(start) to v.(start+len-1).

val fill_empty_slots_with : ('a_) t -> 'a -> unit

fill_empty_slots_with v x puts x in the slots of v's underlying array that are not used (ie in the last capacity v - length v slots). This is useful if you removed some elements from the vector and want to be sure they can be GC'd by erasing them from the vector.

since
2.4
val of_klist : ?⁠init:('arw) t -> 'a klist -> ('arw) t
val to_klist : ('a_) t -> 'a klist
val of_gen : ?⁠init:('arw) t -> 'a gen -> ('arw) t
val to_gen : ('a_) t -> 'a gen
val pp : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> 'a printer -> ('a_) t printer
\ No newline at end of file +CCVector (containers.CCVector)

Module CCVector

Growable, mutable vector

type ro = [
| `RO
]
type rw = [
| `RW
]
type ('a, 'mut) t

The type of a vector of elements of type 'a, with a mutability flat 'mut.

type 'a vector = ('arw) t

Type synonym: a 'a vector is mutable.

type 'a ro_vector = ('aro) t

Alias for immutable vectors.

since
0.15
type 'a sequence = ('a -> unit) -> unit
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a gen = unit -> 'a option
type 'a equal = 'a -> 'a -> bool
type 'a ord = 'a -> 'a -> int
type 'a printer = Format.formatter -> 'a -> unit
val freeze : ('a_) t -> ('aro) t

Make an immutable vector (no copy! Don't use the old version).

val freeze_copy : ('a_) t -> ('aro) t

Copy the vector into an immutable version.

val create : unit -> ('arw) t

Create a new, empty vector.

val create_with : ?⁠capacity:int -> 'a -> ('arw) t

Create a new vector, using the given value as a filler.

parameter capacity

the size of the underlying array. caution: the value will likely not be GC'd before the vector is.

val return : 'a -> ('a'mut) t

Singleton vector.

since
0.14
val make : int -> 'a -> ('a'mut) t

make n x makes a vector of size n, filled with x.

val init : int -> (int -> 'a) -> ('a'mut) t

Init the vector with the given function and size.

val clear : ('arw) t -> unit

Clear the content of the vector.

val ensure_with : init:'a -> ('arw) t -> int -> unit

Hint to the vector that it should have at least the given capacity.

parameter init

if capacity v = 0, used as a filler element for the underlying array (see create_with).

since
0.14
val ensure : ('arw) t -> int -> unit

Hint to the vector that it should have at least the given capacity. Just a hint, will not be enforced if the vector is empty and init is not provided.

val is_empty : ('a_) t -> bool

Is the vector empty?

val push : ('arw) t -> 'a -> unit

Add an element at the end of the vector.

val append : ('arw) t -> ('a_) t -> unit

append a b adds all elements of b to a.

val append_array : ('arw) t -> 'a array -> unit

Like append, with an array.

val append_seq : ('arw) t -> 'a sequence -> unit

Append content of sequence.

val append_list : ('arw) t -> 'a list -> unit

Append content of list.

since
0.14
val append_gen : ('arw) t -> 'a gen -> unit

Append content of generator.

since
0.20
val equal : 'a equal -> ('a_) t equal
val compare : 'a ord -> ('a_) t ord

Total ordering on vectors. Lexicographic comparison.

exception Empty

Raised on empty stack.

val pop : ('arw) t -> 'a option

Remove last element, or None.

val pop_exn : ('arw) t -> 'a

Remove last element, or raise a Failure if empty.

raises Empty

on an empty vector.

val top : ('a_) t -> 'a option

Top element, if present.

since
0.6
val top_exn : ('a_) t -> 'a

Top element, if present.

raises Empty

on an empty vector.

since
0.6
val copy : ('a_) t -> ('a'mut) t

Shallow copy (may give an immutable or mutable vector).

val shrink : ('arw) t -> int -> unit

Shrink to the given size (remove elements above this size). Does nothing if the parameter is bigger than the current size.

val member : eq:('a -> 'a -> bool) -> 'a -> ('a_) t -> bool

Is the element a member of the vector?

val sort : ('a -> 'a -> int) -> ('a_) t -> ('a'mut) t

Sort the vector, returning a copy of it that is sorted w.r.t the given ordering. The vector itself is unchanged.

val sort' : ('a -> 'a -> int) -> ('arw) t -> unit

Sort the vector in place (modifying it).

val uniq_sort : ('a -> 'a -> int) -> ('arw) t -> unit

Sort the array and remove duplicates, in place (e.g. modifying the vector itself).

val iter : ('a -> unit) -> ('a_) t -> unit

Iterate on the vector's content.

val iteri : (int -> 'a -> unit) -> ('a_) t -> unit

Iterate on the vector, with indexes.

val map : ('a -> 'b) -> ('a_) t -> ('b'mut) t

Map elements of the vector, yielding a new vector.

val map_in_place : ('a -> 'a) -> ('a_) t -> unit

Map elements of the vector in place

since
2.3
val filter : ('a -> bool) -> ('a_) t -> ('a'mut) t

Filter elements from the vector. filter p v leaves v unchanged but returns a new vector that only contains elements of v satisfying p.

val filter' : ('a -> bool) -> ('arw) t -> unit

Filter elements in place.

val fold : ('b -> 'a -> 'b) -> 'b -> ('a_) t -> 'b

Fold on elements of the vector

val exists : ('a -> bool) -> ('a_) t -> bool

Existential test (is there an element that satisfies the predicate?).

val for_all : ('a -> bool) -> ('a_) t -> bool

Universal test (do all the elements satisfy the predicate?).

val find : ('a -> bool) -> ('a_) t -> 'a option

Find an element that satisfies the predicate.

val find_exn : ('a -> bool) -> ('a_) t -> 'a

Find an element that satisfies the predicate, or

raises Not_found

if no element does.

val find_map : ('a -> 'b option) -> ('a_) t -> 'b option

find_map f v returns the first Some y = f x for x in v, or None if f x = None for each x in v.

since
0.14
val filter_map : ('a -> 'b option) -> ('a_) t -> ('b'mut) t

Map elements with a function, possibly filtering some of them out.

val filter_map_in_place : ('a -> 'a option) -> ('a_) t -> unit

Filter-map elements of the vector in place

since
2.3
val flat_map : ('a -> ('b_) t) -> ('a_) t -> ('b'mut) t

Map each element to a sub-vector.

val flat_map_seq : ('a -> 'b sequence) -> ('a_) t -> ('b'mut) t

Like flat_map, but using sequence for intermediate collections.

since
0.14
val flat_map_list : ('a -> 'b list) -> ('a_) t -> ('b'mut) t

Like flat_map, but using list for intermediate collections.

since
0.14
val (>>=) : ('a_) t -> ('a -> ('b_) t) -> ('b'mut) t

Infix version of flat_map.

val (>|=) : ('a_) t -> ('a -> 'b) -> ('b'mut) t

Infix version of map.

val get : ('a_) t -> int -> 'a

Access element by its index, or

raises Invalid_argument

if bad index.

val set : ('arw) t -> int -> 'a -> unit

Modify element at given index, or

raises Invalid_argument

if bad index.

val remove : ('arw) t -> int -> unit

Remove the n-th element of the vector. Does NOT preserve the order of the elements (might swap with the last element).

val rev : ('a_) t -> ('a'mut) t

Reverse the vector.

val rev_in_place : ('arw) t -> unit

Reverse the vector in place.

since
0.14
val rev_iter : ('a -> unit) -> ('a_) t -> unit

rev_iter f a is the same as iter f (rev a), only more efficient.

since
0.14
val size : ('a_) t -> int

Number of elements in the vector.

val length : (__) t -> int

Synonym for size.

val capacity : (__) t -> int

Number of elements the vector can contain without being resized.

val unsafe_get_array : ('arw) t -> 'a array

Access the underlying shared array (do not modify!). unsafe_get_array v is longer than size v, but elements at higher index than size v are undefined (do not access!).

val (--) : int -> int -> (int, 'mut) t

Range of integers, either ascending or descending (both included, therefore the result is never empty). Example: 1 -- 10 returns the vector [1;2;3;4;5;6;7;8;9;10].

val (--^) : int -> int -> (int, 'mut) t

Range of integers, either ascending or descending, but excluding right. Example: 1 --^ 10 returns the vector [1;2;3;4;5;6;7;8;9].

since
0.17
val of_array : 'a array -> ('a'mut) t

of_array a returns a vector corresponding to the array a. Operates in O(n) time.

val of_list : 'a list -> ('a'mut) t
val to_array : ('a_) t -> 'a array

to_array v returns an array corresponding to the vector v.

val to_list : ('a_) t -> 'a list

Return a list with the elements contained in the vector.

val of_seq : ?⁠init:('arw) t -> 'a sequence -> ('arw) t
val to_seq : ('a_) t -> 'a sequence

Return a sequence with the elements contained in the vector.

val to_seq_rev : ('a_) t -> 'a sequence

to_seq_rev v returns the sequence of elements of v in reverse order, that is, the last elements of v are iterated on first.

since
0.14
val slice : ('arw) t -> 'a array * int * int

Vector as an array slice. By doing it we expose the internal array, so be careful!.

val slice_seq : ('a_) t -> int -> int -> 'a sequence

slice_seq v start len is the sequence of elements from v.(start) to v.(start+len-1).

val fill_empty_slots_with : ('a_) t -> 'a -> unit

fill_empty_slots_with v x puts x in the slots of v's underlying array that are not used (ie in the last capacity v - length v slots). This is useful if you removed some elements from the vector and want to be sure they can be GC'd by erasing them from the vector.

since
2.4
val of_klist : ?⁠init:('arw) t -> 'a klist -> ('arw) t
val to_klist : ('a_) t -> 'a klist
val of_gen : ?⁠init:('arw) t -> 'a gen -> ('arw) t
val to_gen : ('a_) t -> 'a gen
val to_string : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> ('a -> string) -> ('a_) t -> string

Print the vector in a string

since
NEXT_RELEASE
val pp : ?⁠start:string -> ?⁠stop:string -> ?⁠sep:string -> 'a printer -> ('a_) t printer
\ No newline at end of file diff --git a/dev/containers/CCWBTree/.dune-keep b/dev/containers/CCWBTree/.dune-keep new file mode 100644 index 00000000..e69de29b diff --git a/dev/containers/CCWBTree/Make/argument-1-X/index.html b/dev/containers/CCWBTree/Make/argument-1-X/index.html new file mode 100644 index 00000000..f5aec9a9 --- /dev/null +++ b/dev/containers/CCWBTree/Make/argument-1-X/index.html @@ -0,0 +1,2 @@ + +1-X (containers.CCWBTree.Make.1-X)

Parameter Make.1-X

type t
val compare : t -> t -> int
\ No newline at end of file diff --git a/dev/containers/CCWBTree/Make/index.html b/dev/containers/CCWBTree/Make/index.html new file mode 100644 index 00000000..58e1826c --- /dev/null +++ b/dev/containers/CCWBTree/Make/index.html @@ -0,0 +1,2 @@ + +Make (containers.CCWBTree.Make)

Module CCWBTree.Make

Parameters

Signature

type key = X.t
type +'a t
val empty : 'a t
val is_empty : _ t -> bool
val singleton : key -> 'a -> 'a t
val mem : key -> _ t -> bool
val get : key -> 'a t -> 'a option
val get_exn : key -> 'a t -> 'a
raises Not_found

if the key is not present.

val nth : int -> 'a t -> (key * 'a) option

nth i m returns the i-th key, value in the ascending order. Complexity is O(log (cardinal m)).

val nth_exn : int -> 'a t -> key * 'a
raises Not_found

if the index is invalid.

val get_rank : key -> 'a t -> [ `At of int | `After of int | `First ]

get_rank k m looks for the rank of k in m, i.e. the index of k in the sorted list of bindings of m. let (`At n) = get_rank k m in nth_exn n m = get m k should hold.

since
1.4
val add : key -> 'a -> 'a t -> 'a t
val remove : key -> 'a t -> 'a t
val update : key -> ('a option -> 'a option) -> 'a t -> 'a t

update k f m calls f (Some v) if get k m = Some v, f None otherwise. Then, if f returns Some v' it binds k to v', if f returns None it removes k.

val cardinal : _ t -> int
val weight : _ t -> int
val fold : f:('b -> key -> 'a -> 'b) -> x:'b -> 'a t -> 'b
val mapi : f:(key -> 'a -> 'b) -> 'a t -> 'b t

Map values, giving both key and value. Will use WORD.of_list to rebuild keys.

since
0.17
val map : f:('a -> 'b) -> 'a t -> 'b t

Map values, giving only the value.

since
0.17
val iter : f:(key -> 'a -> unit) -> 'a t -> unit
val split : key -> 'a t -> 'a t * 'a option * 'a t

split k t returns l, o, r where l is the part of the map with keys smaller than k, r has keys bigger than k, and o = Some v if k, v belonged to the map.

val merge : f:(key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t

Like Map.S.merge.

val extract_min : 'a t -> key * 'a * 'a t

extract_min m returns k, v, m' where k,v is the pair with the smallest key in m, and m' does not contain k.

raises Not_found

if the map is empty.

val extract_max : 'a t -> key * 'a * 'a t

extract_max m returns k, v, m' where k,v is the pair with the highest key in m, and m' does not contain k.

raises Not_found

if the map is empty.

val choose : 'a t -> (key * 'a) option
val choose_exn : 'a t -> key * 'a
raises Not_found

if the tree is empty.

val random_choose : Random.State.t -> 'a t -> key * 'a

Randomly choose a (key,value) pair within the tree, using weights as probability weights.

raises Not_found

if the tree is empty.

val add_list : 'a t -> (key * 'a) list -> 'a t
val of_list : (key * 'a) list -> 'a t
val to_list : 'a t -> (key * 'a) list
val add_seq : 'a t -> (key * 'a) sequence -> 'a t
val of_seq : (key * 'a) sequence -> 'a t
val to_seq : 'a t -> (key * 'a) sequence
val add_gen : 'a t -> (key * 'a) gen -> 'a t
val of_gen : (key * 'a) gen -> 'a t
val to_gen : 'a t -> (key * 'a) gen
val pp : key printer -> 'a printer -> 'a t printer

Renamed from val print.

since
2.0
\ No newline at end of file diff --git a/dev/containers/CCWBTree/MakeFull/argument-1-X/index.html b/dev/containers/CCWBTree/MakeFull/argument-1-X/index.html new file mode 100644 index 00000000..b33ec86f --- /dev/null +++ b/dev/containers/CCWBTree/MakeFull/argument-1-X/index.html @@ -0,0 +1,2 @@ + +1-X (containers.CCWBTree.MakeFull.1-X)

Parameter MakeFull.1-X

include ORD
type t
val compare : t -> t -> int
val weight : t -> int
\ No newline at end of file diff --git a/dev/containers/CCWBTree/MakeFull/index.html b/dev/containers/CCWBTree/MakeFull/index.html new file mode 100644 index 00000000..bb8dffe8 --- /dev/null +++ b/dev/containers/CCWBTree/MakeFull/index.html @@ -0,0 +1,2 @@ + +MakeFull (containers.CCWBTree.MakeFull)

Module CCWBTree.MakeFull

Use the custom X.weight function

Parameters

Signature

type key = X.t
type +'a t
val empty : 'a t
val is_empty : _ t -> bool
val singleton : key -> 'a -> 'a t
val mem : key -> _ t -> bool
val get : key -> 'a t -> 'a option
val get_exn : key -> 'a t -> 'a
raises Not_found

if the key is not present.

val nth : int -> 'a t -> (key * 'a) option

nth i m returns the i-th key, value in the ascending order. Complexity is O(log (cardinal m)).

val nth_exn : int -> 'a t -> key * 'a
raises Not_found

if the index is invalid.

val get_rank : key -> 'a t -> [ `At of int | `After of int | `First ]

get_rank k m looks for the rank of k in m, i.e. the index of k in the sorted list of bindings of m. let (`At n) = get_rank k m in nth_exn n m = get m k should hold.

since
1.4
val add : key -> 'a -> 'a t -> 'a t
val remove : key -> 'a t -> 'a t
val update : key -> ('a option -> 'a option) -> 'a t -> 'a t

update k f m calls f (Some v) if get k m = Some v, f None otherwise. Then, if f returns Some v' it binds k to v', if f returns None it removes k.

val cardinal : _ t -> int
val weight : _ t -> int
val fold : f:('b -> key -> 'a -> 'b) -> x:'b -> 'a t -> 'b
val mapi : f:(key -> 'a -> 'b) -> 'a t -> 'b t

Map values, giving both key and value. Will use WORD.of_list to rebuild keys.

since
0.17
val map : f:('a -> 'b) -> 'a t -> 'b t

Map values, giving only the value.

since
0.17
val iter : f:(key -> 'a -> unit) -> 'a t -> unit
val split : key -> 'a t -> 'a t * 'a option * 'a t

split k t returns l, o, r where l is the part of the map with keys smaller than k, r has keys bigger than k, and o = Some v if k, v belonged to the map.

val merge : f:(key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t

Like Map.S.merge.

val extract_min : 'a t -> key * 'a * 'a t

extract_min m returns k, v, m' where k,v is the pair with the smallest key in m, and m' does not contain k.

raises Not_found

if the map is empty.

val extract_max : 'a t -> key * 'a * 'a t

extract_max m returns k, v, m' where k,v is the pair with the highest key in m, and m' does not contain k.

raises Not_found

if the map is empty.

val choose : 'a t -> (key * 'a) option
val choose_exn : 'a t -> key * 'a
raises Not_found

if the tree is empty.

val random_choose : Random.State.t -> 'a t -> key * 'a

Randomly choose a (key,value) pair within the tree, using weights as probability weights.

raises Not_found

if the tree is empty.

val add_list : 'a t -> (key * 'a) list -> 'a t
val of_list : (key * 'a) list -> 'a t
val to_list : 'a t -> (key * 'a) list
val add_seq : 'a t -> (key * 'a) sequence -> 'a t
val of_seq : (key * 'a) sequence -> 'a t
val to_seq : 'a t -> (key * 'a) sequence
val add_gen : 'a t -> (key * 'a) gen -> 'a t
val of_gen : (key * 'a) gen -> 'a t
val to_gen : 'a t -> (key * 'a) gen
val pp : key printer -> 'a printer -> 'a t printer

Renamed from val print.

since
2.0
\ No newline at end of file diff --git a/dev/containers/CCWBTree/index.html b/dev/containers/CCWBTree/index.html new file mode 100644 index 00000000..103c1f71 --- /dev/null +++ b/dev/containers/CCWBTree/index.html @@ -0,0 +1,2 @@ + +CCWBTree (containers.CCWBTree)

Module CCWBTree

Weight-Balanced Tree

status: experimental

since
0.13
type 'a sequence = ('a -> unit) -> unit
type 'a gen = unit -> 'a option
type 'a printer = Format.formatter -> 'a -> unit
module type ORD = sig ... end
module type KEY = sig ... end

Signature

module type S = sig ... end

Functor

module Make : functor (X : ORD) -> S with type key = X.t
module MakeFull : functor (X : KEY) -> S with type key = X.t

Use the custom X.weight function

\ No newline at end of file diff --git a/dev/containers/CCWBTree/module-type-KEY/index.html b/dev/containers/CCWBTree/module-type-KEY/index.html new file mode 100644 index 00000000..19dd3147 --- /dev/null +++ b/dev/containers/CCWBTree/module-type-KEY/index.html @@ -0,0 +1,2 @@ + +KEY (containers.CCWBTree.KEY)

Module type CCWBTree.KEY

include ORD
type t
val compare : t -> t -> int
val weight : t -> int
\ No newline at end of file diff --git a/dev/containers/CCWBTree/module-type-ORD/index.html b/dev/containers/CCWBTree/module-type-ORD/index.html new file mode 100644 index 00000000..e54e3949 --- /dev/null +++ b/dev/containers/CCWBTree/module-type-ORD/index.html @@ -0,0 +1,2 @@ + +ORD (containers.CCWBTree.ORD)

Module type CCWBTree.ORD

type t
val compare : t -> t -> int
\ No newline at end of file diff --git a/dev/containers/CCWBTree/module-type-S/index.html b/dev/containers/CCWBTree/module-type-S/index.html new file mode 100644 index 00000000..fb4fbc36 --- /dev/null +++ b/dev/containers/CCWBTree/module-type-S/index.html @@ -0,0 +1,2 @@ + +S (containers.CCWBTree.S)

Module type CCWBTree.S

type key
type +'a t
val empty : 'a t
val is_empty : _ t -> bool
val singleton : key -> 'a -> 'a t
val mem : key -> _ t -> bool
val get : key -> 'a t -> 'a option
val get_exn : key -> 'a t -> 'a
raises Not_found

if the key is not present.

val nth : int -> 'a t -> (key * 'a) option

nth i m returns the i-th key, value in the ascending order. Complexity is O(log (cardinal m)).

val nth_exn : int -> 'a t -> key * 'a
raises Not_found

if the index is invalid.

val get_rank : key -> 'a t -> [ `At of int | `After of int | `First ]

get_rank k m looks for the rank of k in m, i.e. the index of k in the sorted list of bindings of m. let (`At n) = get_rank k m in nth_exn n m = get m k should hold.

since
1.4
val add : key -> 'a -> 'a t -> 'a t
val remove : key -> 'a t -> 'a t
val update : key -> ('a option -> 'a option) -> 'a t -> 'a t

update k f m calls f (Some v) if get k m = Some v, f None otherwise. Then, if f returns Some v' it binds k to v', if f returns None it removes k.

val cardinal : _ t -> int
val weight : _ t -> int
val fold : f:('b -> key -> 'a -> 'b) -> x:'b -> 'a t -> 'b
val mapi : f:(key -> 'a -> 'b) -> 'a t -> 'b t

Map values, giving both key and value. Will use WORD.of_list to rebuild keys.

since
0.17
val map : f:('a -> 'b) -> 'a t -> 'b t

Map values, giving only the value.

since
0.17
val iter : f:(key -> 'a -> unit) -> 'a t -> unit
val split : key -> 'a t -> 'a t * 'a option * 'a t

split k t returns l, o, r where l is the part of the map with keys smaller than k, r has keys bigger than k, and o = Some v if k, v belonged to the map.

val merge : f:(key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t

Like Map.S.merge.

val extract_min : 'a t -> key * 'a * 'a t

extract_min m returns k, v, m' where k,v is the pair with the smallest key in m, and m' does not contain k.

raises Not_found

if the map is empty.

val extract_max : 'a t -> key * 'a * 'a t

extract_max m returns k, v, m' where k,v is the pair with the highest key in m, and m' does not contain k.

raises Not_found

if the map is empty.

val choose : 'a t -> (key * 'a) option
val choose_exn : 'a t -> key * 'a
raises Not_found

if the tree is empty.

val random_choose : Random.State.t -> 'a t -> key * 'a

Randomly choose a (key,value) pair within the tree, using weights as probability weights.

raises Not_found

if the tree is empty.

val add_list : 'a t -> (key * 'a) list -> 'a t
val of_list : (key * 'a) list -> 'a t
val to_list : 'a t -> (key * 'a) list
val add_seq : 'a t -> (key * 'a) sequence -> 'a t
val of_seq : (key * 'a) sequence -> 'a t
val to_seq : 'a t -> (key * 'a) sequence
val add_gen : 'a t -> (key * 'a) gen -> 'a t
val of_gen : (key * 'a) gen -> 'a t
val to_gen : 'a t -> (key * 'a) gen
val pp : key printer -> 'a printer -> 'a t printer

Renamed from val print.

since
2.0
\ No newline at end of file diff --git a/dev/containers/CCZipper/.dune-keep b/dev/containers/CCZipper/.dune-keep new file mode 100644 index 00000000..e69de29b diff --git a/dev/containers/CCZipper/index.html b/dev/containers/CCZipper/index.html new file mode 100644 index 00000000..d9dce77e --- /dev/null +++ b/dev/containers/CCZipper/index.html @@ -0,0 +1,2 @@ + +CCZipper (containers.CCZipper)

Module CCZipper

List Zipper

since
1.0
type 'a t = 'a list * 'a list

The pair l, r represents the list List.rev_append l r, but with the focus on r

val empty : 'a t

Empty zipper.

val is_empty : _ t -> bool

Empty zipper? Returns true iff the two lists are empty.

val to_list : 'a t -> 'a list

Convert the zipper back to a list. to_list (l,r) is List.rev_append l r.

val to_rev_list : 'a t -> 'a list

Convert the zipper back to a reversed list. In other words, to_list (l,r) is List.rev_append r l.

val make : 'a list -> 'a t

Create a zipper pointing at the first element of the list.

val left : 'a t -> 'a t

Go to the left, or do nothing if the zipper is already at leftmost pos.

val left_exn : 'a t -> 'a t

Go to the left, or

raises Invalid_argument

if the zipper is already at leftmost pos.

val right : 'a t -> 'a t

Go to the right, or do nothing if the zipper is already at rightmost pos.

val right_exn : 'a t -> 'a t

Go to the right, or

raises Invalid_argument

if the zipper is already at rightmost pos.

val modify : ('a option -> 'a option) -> 'a t -> 'a t

Modify the current element, if any, by returning a new element, or returning None if the element is to be deleted.

val insert : 'a -> 'a t -> 'a t

Insert an element at the current position. If an element was focused, insert x l adds x just before it, and focuses on x.

val remove : 'a t -> 'a t

remove l removes the current element, if any.

val is_focused : _ t -> bool

Is the zipper focused on some element? That is, will focused return a Some v?

val focused : 'a t -> 'a option

Return the focused element, if any. focused zip = Some _ iff empty zip = false.

val focused_exn : 'a t -> 'a

Return the focused element, or

raises Not_found

if the zipper is at an end.

val drop_before : 'a t -> 'a t

Drop every element on the "left" (calling left then will do nothing).

val drop_after : 'a t -> 'a t

Drop every element on the "right" (calling right then will do nothing), keeping the focused element, if any.

val drop_after_and_focused : 'a t -> 'a t

Drop every element on the "right" (calling right then will do nothing), including the focused element if it is present.

\ No newline at end of file diff --git a/dev/containers/Containers/.dune-keep b/dev/containers/Containers/.dune-keep new file mode 100644 index 00000000..e69de29b diff --git a/dev/containers/Containers/Hashtbl/Make/index.html b/dev/containers/Containers/Hashtbl/Make/index.html index e1883401..3ddf3a52 100644 --- a/dev/containers/Containers/Hashtbl/Make/index.html +++ b/dev/containers/Containers/Hashtbl/Make/index.html @@ -1,2 +1,2 @@ -Make (containers.Containers.Hashtbl.Make)

Module Hashtbl.Make

Parameters

  • H : Hashtbl.HashedType

Signature

type key = H.t
type 'a t = 'a Hashtbl.Make(H).t
val create : int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> Hashtbl.statistics
\ No newline at end of file +Make (containers.Containers.Hashtbl.Make)

Module Hashtbl.Make

Parameters

  • H : Hashtbl.HashedType

Signature

type key = H.t
type 'a t = 'a Hashtbl.Make(H).t
val create : int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> Hashtbl.statistics
\ No newline at end of file diff --git a/dev/containers/Containers/Hashtbl/MakeSeeded/argument-1-H/index.html b/dev/containers/Containers/Hashtbl/MakeSeeded/argument-1-H/index.html index e90f4416..17bf8dc8 100644 --- a/dev/containers/Containers/Hashtbl/MakeSeeded/argument-1-H/index.html +++ b/dev/containers/Containers/Hashtbl/MakeSeeded/argument-1-H/index.html @@ -1,2 +1,2 @@ -1-H (containers.Containers.Hashtbl.MakeSeeded.1-H)

Parameter MakeSeeded.1-H

type t
val equal : t -> t -> bool
val hash : int -> t -> int
\ No newline at end of file +1-H (containers.Containers.Hashtbl.MakeSeeded.1-H)

Parameter MakeSeeded.1-H

type t
val equal : t -> t -> bool
val hash : int -> t -> int
\ No newline at end of file diff --git a/dev/containers/Containers/Hashtbl/MakeSeeded/index.html b/dev/containers/Containers/Hashtbl/MakeSeeded/index.html index 657a3864..8a8ad767 100644 --- a/dev/containers/Containers/Hashtbl/MakeSeeded/index.html +++ b/dev/containers/Containers/Hashtbl/MakeSeeded/index.html @@ -1,2 +1,2 @@ -MakeSeeded (containers.Containers.Hashtbl.MakeSeeded)

Module Hashtbl.MakeSeeded

Parameters

Signature

type key = H.t
type 'a t
val create : ?⁠random:bool -> int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> statistics
\ No newline at end of file +MakeSeeded (containers.Containers.Hashtbl.MakeSeeded)

Module Hashtbl.MakeSeeded

Parameters

Signature

type key = H.t
type 'a t
val create : ?⁠random:bool -> int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> statistics
\ No newline at end of file diff --git a/dev/containers/Containers/Hashtbl/index.html b/dev/containers/Containers/Hashtbl/index.html index 2abcdeb3..db4b78bf 100644 --- a/dev/containers/Containers/Hashtbl/index.html +++ b/dev/containers/Containers/Hashtbl/index.html @@ -1,2 +1,2 @@ -Hashtbl (containers.Containers.Hashtbl)

Module Containers.Hashtbl

since
0.14
include module type of Hashtbl with type Hashtbl.statistics = Hashtbl.statistics and module Hashtbl.Make = Hashtbl.Make and type ('a, 'b) Hashtbl.t = ('a'b) Hashtbl.t
type ('a, 'b) t = ('a'b) Hashtbl.t
val create : ?⁠random:bool -> int -> ('a'b) t
val clear : ('a'b) t -> unit
val reset : ('a'b) t -> unit
val copy : ('a'b) t -> ('a'b) t
val add : ('a'b) t -> 'a -> 'b -> unit
val find : ('a'b) t -> 'a -> 'b
val find_opt : ('a'b) t -> 'a -> 'b option
val find_all : ('a'b) t -> 'a -> 'b list
val mem : ('a'b) t -> 'a -> bool
val remove : ('a'b) t -> 'a -> unit
val replace : ('a'b) t -> 'a -> 'b -> unit
val iter : ('a -> 'b -> unit) -> ('a'b) t -> unit
val filter_map_inplace : ('a -> 'b -> 'b option) -> ('a'b) t -> unit
val fold : ('a -> 'b -> 'c -> 'c) -> ('a'b) t -> 'c -> 'c
val length : ('a'b) t -> int
val randomize : unit -> unit
val is_randomized : unit -> bool
type statistics = Hashtbl.statistics = {
num_bindings : int;
num_buckets : int;
max_bucket_length : int;
bucket_histogram : int array;
}
val stats : ('a'b) t -> statistics
module type HashedType = sig ... end
module type S = sig ... end
module Make : functor (H : Hashtbl.HashedType) -> sig ... end
module type SeededHashedType = sig ... end
module type SeededS = sig ... end
module MakeSeeded : functor (H : SeededHashedType) -> sig ... end
val hash : 'a -> int
val seeded_hash : int -> 'a -> int
val hash_param : int -> int -> 'a -> int
val seeded_hash_param : int -> int -> int -> 'a -> int
include CCHashtbl.Poly
val get : ('a'b) Hashtbl.t -> 'a -> 'b option

Safe version of Hashtbl.find.

val get_or : ('a'b) Hashtbl.t -> 'a -> default:'b -> 'b

get_or tbl k ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in tbl).

since
0.16
val keys : ('a'b) Hashtbl.t -> 'a CCHashtbl.sequence

Iterate on keys (similar order as Hashtbl.iter).

val values : ('a'b) Hashtbl.t -> 'b CCHashtbl.sequence

Iterate on values in the table.

val keys_list : ('a'b) Hashtbl.t -> 'a list

keys_list t is the list of keys in t. If the key is in the Hashtable multiple times, all occurrences will be returned.

since
0.8
val values_list : ('a'b) Hashtbl.t -> 'b list

values_list t is the list of values in t.

since
0.8
val map_list : ('a -> 'b -> 'c) -> ('a'b) Hashtbl.t -> 'c list

Map on a hashtable's items, collect into a list.

val incr : ?⁠by:int -> ('a, int) Hashtbl.t -> 'a -> unit

incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).

parameter by

if specified, the int value is incremented by by rather than 1.

since
0.16
val decr : ?⁠by:int -> ('a, int) Hashtbl.t -> 'a -> unit

Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.

since
0.16
val to_seq : ('a'b) Hashtbl.t -> ('a * 'b) CCHashtbl.sequence

Iterate on bindings in the table.

val add_list : ('a'b list) Hashtbl.t -> 'a -> 'b -> unit

add_list tbl x y adds y to the list x is bound to. If x is not bound, it becomes bound to y.

since
0.16
val add_seq : ('a'b) Hashtbl.t -> ('a * 'b) CCHashtbl.sequence -> unit

Add the corresponding pairs to the table, using Hashtbl.add.

since
0.16
val of_seq : ('a * 'b) CCHashtbl.sequence -> ('a'b) Hashtbl.t

From the given bindings, added in order.

val add_seq_count : ('a, int) Hashtbl.t -> 'a CCHashtbl.sequence -> unit

add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.

since
0.16
val of_seq_count : 'a CCHashtbl.sequence -> ('a, int) Hashtbl.t

Like add_seq_count, but allocates a new table and returns it.

since
0.16
val to_list : ('a'b) Hashtbl.t -> ('a * 'b) list

List of bindings (order unspecified).

val of_list : ('a * 'b) list -> ('a'b) Hashtbl.t

Build a table from the given list of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.

val update : ('a'b) Hashtbl.t -> f:('a -> 'b option -> 'b option) -> k:'a -> unit

update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.

since
0.14
val get_or_add : ('a'b) Hashtbl.t -> f:('a -> 'b) -> k:'a -> 'b

get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.

since
1.0
val pp : 'a CCHashtbl.printer -> 'b CCHashtbl.printer -> ('a'b) Hashtbl.t CCHashtbl.printer

Printer for table. Renamed from print since 2.0.

since
0.13
module type S' = CCHashtbl.S
module Make' = CCHashtbl.Make
\ No newline at end of file +Hashtbl (containers.Containers.Hashtbl)

Module Containers.Hashtbl

since
0.14
include module type of Hashtbl with type Hashtbl.statistics = Hashtbl.statistics and module Hashtbl.Make = Hashtbl.Make and type ('a, 'b) Hashtbl.t = ('a'b) Hashtbl.t
type ('a, 'b) t = ('a'b) Hashtbl.t
val create : ?⁠random:bool -> int -> ('a'b) t
val clear : ('a'b) t -> unit
val reset : ('a'b) t -> unit
val copy : ('a'b) t -> ('a'b) t
val add : ('a'b) t -> 'a -> 'b -> unit
val find : ('a'b) t -> 'a -> 'b
val find_opt : ('a'b) t -> 'a -> 'b option
val find_all : ('a'b) t -> 'a -> 'b list
val mem : ('a'b) t -> 'a -> bool
val remove : ('a'b) t -> 'a -> unit
val replace : ('a'b) t -> 'a -> 'b -> unit
val iter : ('a -> 'b -> unit) -> ('a'b) t -> unit
val filter_map_inplace : ('a -> 'b -> 'b option) -> ('a'b) t -> unit
val fold : ('a -> 'b -> 'c -> 'c) -> ('a'b) t -> 'c -> 'c
val length : ('a'b) t -> int
val randomize : unit -> unit
val is_randomized : unit -> bool
type statistics = Hashtbl.statistics = {
num_bindings : int;
num_buckets : int;
max_bucket_length : int;
bucket_histogram : int array;
}
val stats : ('a'b) t -> statistics
module type HashedType = sig ... end
module type S = sig ... end
module Make : functor (H : Hashtbl.HashedType) -> sig ... end
module type SeededHashedType = sig ... end
module type SeededS = sig ... end
module MakeSeeded : functor (H : SeededHashedType) -> sig ... end
val hash : 'a -> int
val seeded_hash : int -> 'a -> int
val hash_param : int -> int -> 'a -> int
val seeded_hash_param : int -> int -> int -> 'a -> int
include CCHashtbl.Poly
val get : ('a'b) Hashtbl.t -> 'a -> 'b option

Safe version of Hashtbl.find.

val get_or : ('a'b) Hashtbl.t -> 'a -> default:'b -> 'b

get_or tbl k ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in tbl).

since
0.16
val keys : ('a'b) Hashtbl.t -> 'a CCHashtbl.sequence

Iterate on keys (similar order as Hashtbl.iter).

val values : ('a'b) Hashtbl.t -> 'b CCHashtbl.sequence

Iterate on values in the table.

val keys_list : ('a'b) Hashtbl.t -> 'a list

keys_list t is the list of keys in t. If the key is in the Hashtable multiple times, all occurrences will be returned.

since
0.8
val values_list : ('a'b) Hashtbl.t -> 'b list

values_list t is the list of values in t.

since
0.8
val map_list : ('a -> 'b -> 'c) -> ('a'b) Hashtbl.t -> 'c list

Map on a hashtable's items, collect into a list.

val incr : ?⁠by:int -> ('a, int) Hashtbl.t -> 'a -> unit

incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).

parameter by

if specified, the int value is incremented by by rather than 1.

since
0.16
val decr : ?⁠by:int -> ('a, int) Hashtbl.t -> 'a -> unit

Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.

since
0.16
val to_seq : ('a'b) Hashtbl.t -> ('a * 'b) CCHashtbl.sequence

Iterate on bindings in the table.

val add_list : ('a'b list) Hashtbl.t -> 'a -> 'b -> unit

add_list tbl x y adds y to the list x is bound to. If x is not bound, it becomes bound to y.

since
0.16
val add_seq : ('a'b) Hashtbl.t -> ('a * 'b) CCHashtbl.sequence -> unit

Add the corresponding pairs to the table, using Hashtbl.add.

since
0.16
val of_seq : ('a * 'b) CCHashtbl.sequence -> ('a'b) Hashtbl.t

From the given bindings, added in order.

val add_seq_count : ('a, int) Hashtbl.t -> 'a CCHashtbl.sequence -> unit

add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.

since
0.16
val of_seq_count : 'a CCHashtbl.sequence -> ('a, int) Hashtbl.t

Like add_seq_count, but allocates a new table and returns it.

since
0.16
val to_list : ('a'b) Hashtbl.t -> ('a * 'b) list

List of bindings (order unspecified).

val of_list : ('a * 'b) list -> ('a'b) Hashtbl.t

Build a table from the given list of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.

val update : ('a'b) Hashtbl.t -> f:('a -> 'b option -> 'b option) -> k:'a -> unit

update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.

since
0.14
val get_or_add : ('a'b) Hashtbl.t -> f:('a -> 'b) -> k:'a -> 'b

get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.

since
1.0
val pp : 'a CCHashtbl.printer -> 'b CCHashtbl.printer -> ('a'b) Hashtbl.t CCHashtbl.printer

Printer for table. Renamed from print since 2.0.

since
0.13
module type S' = CCHashtbl.S
module Make' = CCHashtbl.Make
\ No newline at end of file diff --git a/dev/containers/Containers/Hashtbl/module-type-HashedType/index.html b/dev/containers/Containers/Hashtbl/module-type-HashedType/index.html index 550d5afc..4b174920 100644 --- a/dev/containers/Containers/Hashtbl/module-type-HashedType/index.html +++ b/dev/containers/Containers/Hashtbl/module-type-HashedType/index.html @@ -1,2 +1,2 @@ -HashedType (containers.Containers.Hashtbl.HashedType)

Module type Hashtbl.HashedType

type t
val equal : t -> t -> bool
val hash : t -> int
\ No newline at end of file +HashedType (containers.Containers.Hashtbl.HashedType)

Module type Hashtbl.HashedType

type t
val equal : t -> t -> bool
val hash : t -> int
\ No newline at end of file diff --git a/dev/containers/Containers/Hashtbl/module-type-S'/index.html b/dev/containers/Containers/Hashtbl/module-type-S'/index.html index 5e656e4c..a34f0783 100644 --- a/dev/containers/Containers/Hashtbl/module-type-S'/index.html +++ b/dev/containers/Containers/Hashtbl/module-type-S'/index.html @@ -1,2 +1,2 @@ -S' (containers.Containers.Hashtbl.S')

Module type Hashtbl.S'

include Hashtbl.S
type key
type 'a t
val create : int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> Hashtbl.statistics
val get : 'a t -> key -> 'a option

Safe version of Hashtbl.find.

val get_or : 'a t -> key -> default:'a -> 'a

get_or tbl k ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in tbl).

since
0.16
val add_list : 'a list t -> key -> 'a -> unit

add_list tbl x y adds y to the list x is bound to. If x is not bound, it becomes bound to y.

since
0.16
val incr : ?⁠by:int -> int t -> key -> unit

incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).

parameter by

if specified, the int value is incremented by by rather than 1.

since
0.16
val decr : ?⁠by:int -> int t -> key -> unit

Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.

since
0.16
val keys : 'a t -> key CCHashtbl.sequence

Iterate on keys (similar order as Hashtbl.iter).

val values : 'a t -> 'a CCHashtbl.sequence

Iterate on values in the table.

val keys_list : _ t -> key list

keys_list t is the list of keys in t. If the key is in the Hashtable multiple times, all occurrences will be returned.

since
0.8
val values_list : 'a t -> 'a list

values_list t is the list of values in t.

since
0.8
val map_list : (key -> 'a -> 'b) -> 'a t -> 'b list

Map on a hashtable's items, collect into a list.

val to_seq : 'a t -> (key * 'a) CCHashtbl.sequence

Iterate on values in the table.

val of_seq : (key * 'a) CCHashtbl.sequence -> 'a t

From the given bindings, added in order.

val add_seq : 'a t -> (key * 'a) CCHashtbl.sequence -> unit

Add the corresponding pairs to the table, using Hashtbl.add.

since
0.16
val add_seq_count : int t -> key CCHashtbl.sequence -> unit

add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.

since
0.16
val of_seq_count : key CCHashtbl.sequence -> int t

Like add_seq_count, but allocates a new table and returns it.

since
0.16
val to_list : 'a t -> (key * 'a) list

List of bindings (order unspecified).

val of_list : (key * 'a) list -> 'a t

Build a table from the given list of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.

val update : 'a t -> f:(key -> 'a option -> 'a option) -> k:key -> unit

update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.

since
0.14
val get_or_add : 'a t -> f:(key -> 'a) -> k:key -> 'a

get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.

since
1.0
val pp : key CCHashtbl.printer -> 'a CCHashtbl.printer -> 'a t CCHashtbl.printer

Printer for tables. Renamed from print since 2.0.

since
0.13
\ No newline at end of file +S' (containers.Containers.Hashtbl.S')

Module type Hashtbl.S'

include Hashtbl.S
type key
type 'a t
val create : int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> Hashtbl.statistics
val get : 'a t -> key -> 'a option

Safe version of Hashtbl.find.

val get_or : 'a t -> key -> default:'a -> 'a

get_or tbl k ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in tbl).

since
0.16
val add_list : 'a list t -> key -> 'a -> unit

add_list tbl x y adds y to the list x is bound to. If x is not bound, it becomes bound to y.

since
0.16
val incr : ?⁠by:int -> int t -> key -> unit

incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).

parameter by

if specified, the int value is incremented by by rather than 1.

since
0.16
val decr : ?⁠by:int -> int t -> key -> unit

Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.

since
0.16
val keys : 'a t -> key CCHashtbl.sequence

Iterate on keys (similar order as Hashtbl.iter).

val values : 'a t -> 'a CCHashtbl.sequence

Iterate on values in the table.

val keys_list : _ t -> key list

keys_list t is the list of keys in t. If the key is in the Hashtable multiple times, all occurrences will be returned.

since
0.8
val values_list : 'a t -> 'a list

values_list t is the list of values in t.

since
0.8
val map_list : (key -> 'a -> 'b) -> 'a t -> 'b list

Map on a hashtable's items, collect into a list.

val to_seq : 'a t -> (key * 'a) CCHashtbl.sequence

Iterate on values in the table.

val of_seq : (key * 'a) CCHashtbl.sequence -> 'a t

From the given bindings, added in order.

val add_seq : 'a t -> (key * 'a) CCHashtbl.sequence -> unit

Add the corresponding pairs to the table, using Hashtbl.add.

since
0.16
val add_seq_count : int t -> key CCHashtbl.sequence -> unit

add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.

since
0.16
val of_seq_count : key CCHashtbl.sequence -> int t

Like add_seq_count, but allocates a new table and returns it.

since
0.16
val to_list : 'a t -> (key * 'a) list

List of bindings (order unspecified).

val of_list : (key * 'a) list -> 'a t

Build a table from the given list of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.

val update : 'a t -> f:(key -> 'a option -> 'a option) -> k:key -> unit

update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.

since
0.14
val get_or_add : 'a t -> f:(key -> 'a) -> k:key -> 'a

get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.

since
1.0
val pp : key CCHashtbl.printer -> 'a CCHashtbl.printer -> 'a t CCHashtbl.printer

Printer for tables. Renamed from print since 2.0.

since
0.13
\ No newline at end of file diff --git a/dev/containers/Containers/Hashtbl/module-type-S/index.html b/dev/containers/Containers/Hashtbl/module-type-S/index.html index 49738ab9..1d956bea 100644 --- a/dev/containers/Containers/Hashtbl/module-type-S/index.html +++ b/dev/containers/Containers/Hashtbl/module-type-S/index.html @@ -1,2 +1,2 @@ -S (containers.Containers.Hashtbl.S)

Module type Hashtbl.S

type key
type 'a t
val create : int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> statistics
\ No newline at end of file +S (containers.Containers.Hashtbl.S)

Module type Hashtbl.S

type key
type 'a t
val create : int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> statistics
\ No newline at end of file diff --git a/dev/containers/Containers/Hashtbl/module-type-SeededHashedType/index.html b/dev/containers/Containers/Hashtbl/module-type-SeededHashedType/index.html index 65a3daba..9f87127a 100644 --- a/dev/containers/Containers/Hashtbl/module-type-SeededHashedType/index.html +++ b/dev/containers/Containers/Hashtbl/module-type-SeededHashedType/index.html @@ -1,2 +1,2 @@ -SeededHashedType (containers.Containers.Hashtbl.SeededHashedType)

Module type Hashtbl.SeededHashedType

type t
val equal : t -> t -> bool
val hash : int -> t -> int
\ No newline at end of file +SeededHashedType (containers.Containers.Hashtbl.SeededHashedType)

Module type Hashtbl.SeededHashedType

type t
val equal : t -> t -> bool
val hash : int -> t -> int
\ No newline at end of file diff --git a/dev/containers/Containers/Hashtbl/module-type-SeededS/index.html b/dev/containers/Containers/Hashtbl/module-type-SeededS/index.html index b0ededae..48ccbe49 100644 --- a/dev/containers/Containers/Hashtbl/module-type-SeededS/index.html +++ b/dev/containers/Containers/Hashtbl/module-type-SeededS/index.html @@ -1,2 +1,2 @@ -SeededS (containers.Containers.Hashtbl.SeededS)

Module type Hashtbl.SeededS

type key
type 'a t
val create : ?⁠random:bool -> int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> statistics
\ No newline at end of file +SeededS (containers.Containers.Hashtbl.SeededS)

Module type Hashtbl.SeededS

type key
type 'a t
val create : ?⁠random:bool -> int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> statistics
\ No newline at end of file diff --git a/dev/containers/Containers/index.html b/dev/containers/Containers/index.html index 2569d292..59abbcc6 100644 --- a/dev/containers/Containers/index.html +++ b/dev/containers/Containers/index.html @@ -1,2 +1,2 @@ -Containers (containers.Containers)

Module Containers

Drop-In replacement to Stdlib

module Array = CCArray
module Array_slice = CCArray_slice
module Bool = CCBool
module Char = Char
module Equal = CCEqual
module Float = CCFloat
module Format = CCFormat
module Fun = CCFun
module Hash = CCHash
module Hashtbl : sig ... end
module Heap = CCHeap
module Int = CCInt
module Int32 = CCInt32
module Int64 = CCInt64
module IO = CCIO
module List = CCList
module Map = CCMap
module Nativeint = CCNativeint
module Option = CCOpt
module Ord = CCOrd
module Pair = CCPair
module Parse = CCParse
module Random = CCRandom
module Ref = CCRef
module Result = CCResult
module Set = CCSet
module String = CCString
module Vector = CCVector
module Monomorphic = CCMonomorphic
module Utf8_string = CCUtf8_string
include Monomorphic

Shadow unsafe functions and operators from Pervasives

val (=) : int -> int -> bool
val (<>) : int -> int -> bool
val (<) : int -> int -> bool
val (>) : int -> int -> bool
val (<=) : int -> int -> bool
val (>=) : int -> int -> bool
val compare : int -> int -> int
val min : int -> int -> int
val max : int -> int -> int

Infix operators for Floats

val (=.) : float -> float -> bool
since
2.1
val (<>.) : float -> float -> bool
since
2.1
val (<.) : float -> float -> bool
since
2.1
val (>.) : float -> float -> bool
since
2.1
val (<=.) : float -> float -> bool
since
2.1
val (>=.) : float -> float -> bool
since
2.1

Shadow Dangerous Operators

val (==) : [ `Consider_using_CCEqual_physical ]
val (!=) : [ `Consider_using_CCEqual_physical ]
since
2.1
\ No newline at end of file +Containers (containers.Containers)

Module Containers

Drop-In replacement to Stdlib

module Array = CCArray
module Array_slice = CCArray_slice
module Bool = CCBool
module Char = Char
module Equal = CCEqual
module Float = CCFloat
module Format = CCFormat
module Fun = CCFun
module Hash = CCHash
module Hashtbl : sig ... end
module Heap = CCHeap
module Int = CCInt
module Int32 = CCInt32
module Int64 = CCInt64
module IO = CCIO
module List = CCList
module Map = CCMap
module Nativeint = CCNativeint
module Option = CCOpt
module Ord = CCOrd
module Pair = CCPair
module Parse = CCParse
module Random = CCRandom
module Ref = CCRef
module Result = CCResult
module Set = CCSet
module String = CCString
module Vector = CCVector
module Monomorphic = CCMonomorphic
module Utf8_string = CCUtf8_string
module Stdlib = CCShims_.Stdlib
include Monomorphic

Shadow unsafe functions and operators from Pervasives

val (=) : int -> int -> bool
val (<>) : int -> int -> bool
val (<) : int -> int -> bool
val (>) : int -> int -> bool
val (<=) : int -> int -> bool
val (>=) : int -> int -> bool
val compare : int -> int -> int
val min : int -> int -> int
val max : int -> int -> int

Infix operators for Floats

val (=.) : float -> float -> bool
since
2.1
val (<>.) : float -> float -> bool
since
2.1
val (<.) : float -> float -> bool
since
2.1
val (>.) : float -> float -> bool
since
2.1
val (<=.) : float -> float -> bool
since
2.1
val (>=.) : float -> float -> bool
since
2.1

Shadow Dangerous Operators

val (==) : [ `Consider_using_CCEqual_physical ]
val (!=) : [ `Consider_using_CCEqual_physical ]
since
2.1
\ No newline at end of file diff --git a/dev/containers/ContainersLabels/.dune-keep b/dev/containers/ContainersLabels/.dune-keep new file mode 100644 index 00000000..e69de29b diff --git a/dev/containers/ContainersLabels/Hashtbl/Make/index.html b/dev/containers/ContainersLabels/Hashtbl/Make/index.html new file mode 100644 index 00000000..328c1668 --- /dev/null +++ b/dev/containers/ContainersLabels/Hashtbl/Make/index.html @@ -0,0 +1,2 @@ + +Make (containers.ContainersLabels.Hashtbl.Make)

Module Hashtbl.Make

Parameters

  • H : Hashtbl.HashedType

Signature

type key = H.t
type 'a t = 'a Hashtbl.Make(H).t
val create : int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> Hashtbl.statistics
\ No newline at end of file diff --git a/dev/containers/ContainersLabels/Hashtbl/MakeSeeded/argument-1-H/index.html b/dev/containers/ContainersLabels/Hashtbl/MakeSeeded/argument-1-H/index.html new file mode 100644 index 00000000..57549630 --- /dev/null +++ b/dev/containers/ContainersLabels/Hashtbl/MakeSeeded/argument-1-H/index.html @@ -0,0 +1,2 @@ + +1-H (containers.ContainersLabels.Hashtbl.MakeSeeded.1-H)

Parameter MakeSeeded.1-H

type t
val equal : t -> t -> bool
val hash : int -> t -> int
\ No newline at end of file diff --git a/dev/containers/ContainersLabels/Hashtbl/MakeSeeded/index.html b/dev/containers/ContainersLabels/Hashtbl/MakeSeeded/index.html new file mode 100644 index 00000000..ad919c6b --- /dev/null +++ b/dev/containers/ContainersLabels/Hashtbl/MakeSeeded/index.html @@ -0,0 +1,2 @@ + +MakeSeeded (containers.ContainersLabels.Hashtbl.MakeSeeded)

Module Hashtbl.MakeSeeded

Parameters

Signature

type key = H.t
type 'a t
val create : ?⁠random:bool -> int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> statistics
\ No newline at end of file diff --git a/dev/containers/ContainersLabels/Hashtbl/index.html b/dev/containers/ContainersLabels/Hashtbl/index.html new file mode 100644 index 00000000..7f5ad48f --- /dev/null +++ b/dev/containers/ContainersLabels/Hashtbl/index.html @@ -0,0 +1,2 @@ + +Hashtbl (containers.ContainersLabels.Hashtbl)

Module ContainersLabels.Hashtbl

since
0.14
include module type of Hashtbl with type Hashtbl.statistics = Hashtbl.statistics and module Hashtbl.Make = Hashtbl.Make and type ('a, 'b) Hashtbl.t = ('a'b) Hashtbl.t
type ('a, 'b) t = ('a'b) Hashtbl.t
val create : ?⁠random:bool -> int -> ('a'b) t
val clear : ('a'b) t -> unit
val reset : ('a'b) t -> unit
val copy : ('a'b) t -> ('a'b) t
val add : ('a'b) t -> 'a -> 'b -> unit
val find : ('a'b) t -> 'a -> 'b
val find_opt : ('a'b) t -> 'a -> 'b option
val find_all : ('a'b) t -> 'a -> 'b list
val mem : ('a'b) t -> 'a -> bool
val remove : ('a'b) t -> 'a -> unit
val replace : ('a'b) t -> 'a -> 'b -> unit
val iter : ('a -> 'b -> unit) -> ('a'b) t -> unit
val filter_map_inplace : ('a -> 'b -> 'b option) -> ('a'b) t -> unit
val fold : ('a -> 'b -> 'c -> 'c) -> ('a'b) t -> 'c -> 'c
val length : ('a'b) t -> int
val randomize : unit -> unit
val is_randomized : unit -> bool
type statistics = Hashtbl.statistics = {
num_bindings : int;
num_buckets : int;
max_bucket_length : int;
bucket_histogram : int array;
}
val stats : ('a'b) t -> statistics
module type HashedType = sig ... end
module type S = sig ... end
module Make : functor (H : Hashtbl.HashedType) -> sig ... end
module type SeededHashedType = sig ... end
module type SeededS = sig ... end
module MakeSeeded : functor (H : SeededHashedType) -> sig ... end
val hash : 'a -> int
val seeded_hash : int -> 'a -> int
val hash_param : int -> int -> 'a -> int
val seeded_hash_param : int -> int -> int -> 'a -> int
include CCHashtbl.Poly
val get : ('a'b) Hashtbl.t -> 'a -> 'b option

Safe version of Hashtbl.find.

val get_or : ('a'b) Hashtbl.t -> 'a -> default:'b -> 'b

get_or tbl k ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in tbl).

since
0.16
val keys : ('a'b) Hashtbl.t -> 'a CCHashtbl.sequence

Iterate on keys (similar order as Hashtbl.iter).

val values : ('a'b) Hashtbl.t -> 'b CCHashtbl.sequence

Iterate on values in the table.

val keys_list : ('a'b) Hashtbl.t -> 'a list

keys_list t is the list of keys in t. If the key is in the Hashtable multiple times, all occurrences will be returned.

since
0.8
val values_list : ('a'b) Hashtbl.t -> 'b list

values_list t is the list of values in t.

since
0.8
val map_list : ('a -> 'b -> 'c) -> ('a'b) Hashtbl.t -> 'c list

Map on a hashtable's items, collect into a list.

val incr : ?⁠by:int -> ('a, int) Hashtbl.t -> 'a -> unit

incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).

parameter by

if specified, the int value is incremented by by rather than 1.

since
0.16
val decr : ?⁠by:int -> ('a, int) Hashtbl.t -> 'a -> unit

Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.

since
0.16
val to_seq : ('a'b) Hashtbl.t -> ('a * 'b) CCHashtbl.sequence

Iterate on bindings in the table.

val add_list : ('a'b list) Hashtbl.t -> 'a -> 'b -> unit

add_list tbl x y adds y to the list x is bound to. If x is not bound, it becomes bound to y.

since
0.16
val add_seq : ('a'b) Hashtbl.t -> ('a * 'b) CCHashtbl.sequence -> unit

Add the corresponding pairs to the table, using Hashtbl.add.

since
0.16
val of_seq : ('a * 'b) CCHashtbl.sequence -> ('a'b) Hashtbl.t

From the given bindings, added in order.

val add_seq_count : ('a, int) Hashtbl.t -> 'a CCHashtbl.sequence -> unit

add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.

since
0.16
val of_seq_count : 'a CCHashtbl.sequence -> ('a, int) Hashtbl.t

Like add_seq_count, but allocates a new table and returns it.

since
0.16
val to_list : ('a'b) Hashtbl.t -> ('a * 'b) list

List of bindings (order unspecified).

val of_list : ('a * 'b) list -> ('a'b) Hashtbl.t

Build a table from the given list of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.

val update : ('a'b) Hashtbl.t -> f:('a -> 'b option -> 'b option) -> k:'a -> unit

update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.

since
0.14
val get_or_add : ('a'b) Hashtbl.t -> f:('a -> 'b) -> k:'a -> 'b

get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.

since
1.0
val pp : 'a CCHashtbl.printer -> 'b CCHashtbl.printer -> ('a'b) Hashtbl.t CCHashtbl.printer

Printer for table. Renamed from print since 2.0.

since
0.13
module type S' = CCHashtbl.S
module Make' = CCHashtbl.Make
\ No newline at end of file diff --git a/dev/containers/ContainersLabels/Hashtbl/module-type-HashedType/index.html b/dev/containers/ContainersLabels/Hashtbl/module-type-HashedType/index.html new file mode 100644 index 00000000..2be19eba --- /dev/null +++ b/dev/containers/ContainersLabels/Hashtbl/module-type-HashedType/index.html @@ -0,0 +1,2 @@ + +HashedType (containers.ContainersLabels.Hashtbl.HashedType)

Module type Hashtbl.HashedType

type t
val equal : t -> t -> bool
val hash : t -> int
\ No newline at end of file diff --git a/dev/containers/ContainersLabels/Hashtbl/module-type-S'/index.html b/dev/containers/ContainersLabels/Hashtbl/module-type-S'/index.html new file mode 100644 index 00000000..e91f96fc --- /dev/null +++ b/dev/containers/ContainersLabels/Hashtbl/module-type-S'/index.html @@ -0,0 +1,2 @@ + +S' (containers.ContainersLabels.Hashtbl.S')

Module type Hashtbl.S'

include Hashtbl.S
type key
type 'a t
val create : int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> Hashtbl.statistics
val get : 'a t -> key -> 'a option

Safe version of Hashtbl.find.

val get_or : 'a t -> key -> default:'a -> 'a

get_or tbl k ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in tbl).

since
0.16
val add_list : 'a list t -> key -> 'a -> unit

add_list tbl x y adds y to the list x is bound to. If x is not bound, it becomes bound to y.

since
0.16
val incr : ?⁠by:int -> int t -> key -> unit

incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).

parameter by

if specified, the int value is incremented by by rather than 1.

since
0.16
val decr : ?⁠by:int -> int t -> key -> unit

Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.

since
0.16
val keys : 'a t -> key CCHashtbl.sequence

Iterate on keys (similar order as Hashtbl.iter).

val values : 'a t -> 'a CCHashtbl.sequence

Iterate on values in the table.

val keys_list : _ t -> key list

keys_list t is the list of keys in t. If the key is in the Hashtable multiple times, all occurrences will be returned.

since
0.8
val values_list : 'a t -> 'a list

values_list t is the list of values in t.

since
0.8
val map_list : (key -> 'a -> 'b) -> 'a t -> 'b list

Map on a hashtable's items, collect into a list.

val to_seq : 'a t -> (key * 'a) CCHashtbl.sequence

Iterate on values in the table.

val of_seq : (key * 'a) CCHashtbl.sequence -> 'a t

From the given bindings, added in order.

val add_seq : 'a t -> (key * 'a) CCHashtbl.sequence -> unit

Add the corresponding pairs to the table, using Hashtbl.add.

since
0.16
val add_seq_count : int t -> key CCHashtbl.sequence -> unit

add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.

since
0.16
val of_seq_count : key CCHashtbl.sequence -> int t

Like add_seq_count, but allocates a new table and returns it.

since
0.16
val to_list : 'a t -> (key * 'a) list

List of bindings (order unspecified).

val of_list : (key * 'a) list -> 'a t

Build a table from the given list of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.

val update : 'a t -> f:(key -> 'a option -> 'a option) -> k:key -> unit

update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.

since
0.14
val get_or_add : 'a t -> f:(key -> 'a) -> k:key -> 'a

get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.

since
1.0
val pp : key CCHashtbl.printer -> 'a CCHashtbl.printer -> 'a t CCHashtbl.printer

Printer for tables. Renamed from print since 2.0.

since
0.13
\ No newline at end of file diff --git a/dev/containers/ContainersLabels/Hashtbl/module-type-S/index.html b/dev/containers/ContainersLabels/Hashtbl/module-type-S/index.html new file mode 100644 index 00000000..5cdd380f --- /dev/null +++ b/dev/containers/ContainersLabels/Hashtbl/module-type-S/index.html @@ -0,0 +1,2 @@ + +S (containers.ContainersLabels.Hashtbl.S)

Module type Hashtbl.S

type key
type 'a t
val create : int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> statistics
\ No newline at end of file diff --git a/dev/containers/ContainersLabels/Hashtbl/module-type-SeededHashedType/index.html b/dev/containers/ContainersLabels/Hashtbl/module-type-SeededHashedType/index.html new file mode 100644 index 00000000..4b2d08fe --- /dev/null +++ b/dev/containers/ContainersLabels/Hashtbl/module-type-SeededHashedType/index.html @@ -0,0 +1,2 @@ + +SeededHashedType (containers.ContainersLabels.Hashtbl.SeededHashedType)

Module type Hashtbl.SeededHashedType

type t
val equal : t -> t -> bool
val hash : int -> t -> int
\ No newline at end of file diff --git a/dev/containers/ContainersLabels/Hashtbl/module-type-SeededS/index.html b/dev/containers/ContainersLabels/Hashtbl/module-type-SeededS/index.html new file mode 100644 index 00000000..5aa5b898 --- /dev/null +++ b/dev/containers/ContainersLabels/Hashtbl/module-type-SeededS/index.html @@ -0,0 +1,2 @@ + +SeededS (containers.ContainersLabels.Hashtbl.SeededS)

Module type Hashtbl.SeededS

type key
type 'a t
val create : ?⁠random:bool -> int -> 'a t
val clear : 'a t -> unit
val reset : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_opt : 'a t -> key -> 'a option
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val filter_map_inplace : (key -> 'a -> 'a option) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
val stats : 'a t -> statistics
\ No newline at end of file diff --git a/dev/containers/ContainersLabels/index.html b/dev/containers/ContainersLabels/index.html new file mode 100644 index 00000000..85a105c2 --- /dev/null +++ b/dev/containers/ContainersLabels/index.html @@ -0,0 +1,2 @@ + +ContainersLabels (containers.ContainersLabels)

Module ContainersLabels

Drop-In replacement to Stdlib

module Array = CCArrayLabels
module Array_slice = CCArray_sliceLabels
module Bool = CCBool
module Char = Char
module Equal = CCEqualLabels
module Float = CCFloat
module Format = CCFormat
module Fun = CCFun
module Hash = CCHash
module Hashtbl : sig ... end
module Heap = CCHeap
module Int = CCInt
module Int32 = CCInt32
module Int64 = CCInt64
module IO = CCIO
module List = CCListLabels
module Map = CCMap
module Nativeint = CCNativeint
module Option = CCOpt
module Ord = CCOrd
module Pair = CCPair
module Parse = CCParse
module Random = CCRandom
module Ref = CCRef
module Result = CCResult
module Set = CCSet
module String = CCStringLabels
module Vector = CCVector
module Monomorphic = CCMonomorphic
module Utf8_string = CCUtf8_string
include Monomorphic

Shadow unsafe functions and operators from Pervasives

val (=) : int -> int -> bool
val (<>) : int -> int -> bool
val (<) : int -> int -> bool
val (>) : int -> int -> bool
val (<=) : int -> int -> bool
val (>=) : int -> int -> bool
val compare : int -> int -> int
val min : int -> int -> int
val max : int -> int -> int

Infix operators for Floats

val (=.) : float -> float -> bool
since
2.1
val (<>.) : float -> float -> bool
since
2.1
val (<.) : float -> float -> bool
since
2.1
val (>.) : float -> float -> bool
since
2.1
val (<=.) : float -> float -> bool
since
2.1
val (>=.) : float -> float -> bool
since
2.1

Shadow Dangerous Operators

val (==) : [ `Consider_using_CCEqual_physical ]
val (!=) : [ `Consider_using_CCEqual_physical ]
since
2.1
\ No newline at end of file diff --git a/dev/containers/Containers_top/.dune-keep b/dev/containers/Containers_top/.dune-keep new file mode 100644 index 00000000..e69de29b diff --git a/dev/containers/Containers_top/index.html b/dev/containers/Containers_top/index.html new file mode 100644 index 00000000..b2cb59ab --- /dev/null +++ b/dev/containers/Containers_top/index.html @@ -0,0 +1,2 @@ + +Containers_top (containers.Containers_top)

Module Containers_top

type 'a printer = Format.formatter -> 'a -> unit
val eval_exn : string -> bool
val install_printer : string -> unit
val install_printers : string list -> unit
\ No newline at end of file diff --git a/dev/containers/containers.odoc b/dev/containers/containers.odoc deleted file mode 100644 index 164a12bc17ee0757e2023c62f02b3f3b3355d7b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9175 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 Sbf2d0I=^iw|3BKsTKiv9T%DN! diff --git a/dev/containers/index-generated.mld b/dev/containers/index-generated.mld deleted file mode 100644 index fe7ddc94..00000000 --- a/dev/containers/index-generated.mld +++ /dev/null @@ -1,2 +0,0 @@ -{1 Library containers} -This library exposes the following toplevel modules: {!modules:CCArray CCArrayLabels CCArray_slice CCBool CCChar CCEqual CCFloat CCFormat CCFun CCHash CCHashtbl CCHeap CCIO CCInt CCInt32 CCInt64 CCList CCListLabels CCMap CCNativeint CCOpt CCOrd CCPair CCParse CCRandom CCRef CCResult CCSet CCString CCUtf8_string CCVector Containers}. \ No newline at end of file diff --git a/dev/containers/index.html b/dev/containers/index.html index dd4fe1b3..00876424 100644 --- a/dev/containers/index.html +++ b/dev/containers/index.html @@ -1,2 +1,2 @@ -index (containers.index)

containers index

Library containers

This library exposes the following toplevel modules:

Library containers.data

This library exposes the following toplevel modules:

Library containers.iter

This library exposes the following toplevel modules:

Library containers.monomorphic

The entry point of this library is the module: CCMonomorphic.

Library containers.sexp

This library exposes the following toplevel modules:

Library containers.thread

This library exposes the following toplevel modules:

Library containers.top

The entry point of this library is the module: Containers_top.

Library containers.unix

The entry point of this library is the module: CCUnix.

\ No newline at end of file +index (containers.index)

containers index

Library containers

This library exposes the following toplevel modules:

Library containers.data

This library exposes the following toplevel modules:

Library containers.iter

This library exposes the following toplevel modules:

Library containers.monomorphic

This library exposes the following toplevel modules:

Library containers.sexp

This library exposes the following toplevel modules:

Library containers.thread

This library exposes the following toplevel modules:

Library containers.top

The entry point of this library is the module: Containers_top.

Library containers.unix

The entry point of this library is the module: CCUnix.

\ No newline at end of file diff --git a/dev/containers/page-index.odoc b/dev/containers/page-index.odoc deleted file mode 100644 index 9b8426d2595e6624cccd1a71a6a918855a9fea04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 654 zcma)4Jx{|h5DgU!Fn|z$AV@7Ag;r2dRWY>~5J;h|%EyY_#HE(pIM{B19cIdakeJei z4GFQZApQ*hfe~@FlK>mTN$=ged*`#wJ?`dK^M(A%)!pN}Wm##6F^Cz6spqWAeTAt{ zgzRUi?~#j@%FE~VboJrwYsjCL@UM-)Vn6a- zLa2%r?GYMzf>sMm;}8lj_N!x>ELq1wnwx;V8rb)ECq7$)v@{$FM0QzXbwCUR;Xny^ k5M2iMeWY5Y6Zw;Zf@9(;Zl+~X^06vqc]+>|\t|)+|(?:\n)))/gm,r={case_insensitive:"cI",lexemes:"l",contains:"c",keywords:"k",subLanguage:"sL",className:"cN",begin:"b",beginKeywords:"bK",end:"e",endsWithParent:"eW",illegal:"i",excludeBegin:"eB",excludeEnd:"eE",returnBegin:"rB",returnEnd:"rE",relevance:"r",variants:"v",IDENT_RE:"IR",UNDERSCORE_IDENT_RE:"UIR",NUMBER_RE:"NR",C_NUMBER_RE:"CNR",BINARY_NUMBER_RE:"BNR",RE_STARTERS_RE:"RSR",BACKSLASH_ESCAPE:"BE",APOS_STRING_MODE:"ASM",QUOTE_STRING_MODE:"QSM",PHRASAL_WORDS_MODE:"PWM",C_LINE_COMMENT_MODE:"CLCM",C_BLOCK_COMMENT_MODE:"CBCM",HASH_COMMENT_MODE:"HCM",NUMBER_MODE:"NM",C_NUMBER_MODE:"CNM",BINARY_NUMBER_MODE:"BNM",CSS_NUMBER_MODE:"CSSNM",REGEXP_MODE:"RM",TITLE_MODE:"TM",UNDERSCORE_TITLE_MODE:"UTM",COMMENT:"C",beginRe:"bR",endRe:"eR",illegalRe:"iR",lexemesRe:"lR",terminators:"t",terminator_end:"tE"},b="",h={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function _(e){return e.replace(/&/g,"&").replace(//g,">")}function E(e){return e.nodeName.toLowerCase()}function v(e,n){var t=e&&e.exec(n);return t&&0===t.index}function l(e){return n.test(e)}function g(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function R(e){var a=[];return function e(n,t){for(var r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?t+=r.nodeValue.length:1===r.nodeType&&(a.push({event:"start",offset:t,node:r}),t=e(r,t),E(r).match(/br|hr|img|input/)||a.push({event:"stop",offset:t,node:r}));return t}(e,0),a}function i(e){if(r&&!e.langApiRestored){for(var n in e.langApiRestored=!0,r)e[n]&&(e[r[n]]=e[n]);(e.c||[]).concat(e.v||[]).forEach(i)}}function m(o){function s(e){return e&&e.source||e}function c(e,n){return new RegExp(s(e),"m"+(o.cI?"i":"")+(n?"g":""))}!function n(t,e){if(!t.compiled){if(t.compiled=!0,t.k=t.k||t.bK,t.k){function r(t,e){o.cI&&(e=e.toLowerCase()),e.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})}var a={};"string"==typeof t.k?r("keyword",t.k):u(t.k).forEach(function(e){r(e,t.k[e])}),t.k=a}t.lR=c(t.l||/\w+/,!0),e&&(t.bK&&(t.b="\\b("+t.bK.split(" ").join("|")+")\\b"),t.b||(t.b=/\B|\b/),t.bR=c(t.b),t.endSameAsBegin&&(t.e=t.b),t.e||t.eW||(t.e=/\B|\b/),t.e&&(t.eR=c(t.e)),t.tE=s(t.e)||"",t.eW&&e.tE&&(t.tE+=(t.e?"|":"")+e.tE)),t.i&&(t.iR=c(t.i)),null==t.r&&(t.r=1),t.c||(t.c=[]),t.c=Array.prototype.concat.apply([],t.c.map(function(e){return function(n){return n.v&&!n.cached_variants&&(n.cached_variants=n.v.map(function(e){return g(n,{v:null},e)})),n.cached_variants||n.eW&&[g(n)]||[n]}("self"===e?t:e)})),t.c.forEach(function(e){n(e,t)}),t.starts&&n(t.starts,e);var i=t.c.map(function(e){return e.bK?"\\.?(?:"+e.b+")\\.?":e.b}).concat([t.tE,t.i]).map(s).filter(Boolean);t.t=i.length?c(function(e,n){for(var t=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,r=0,a="",i=0;i')+n+(t?"":b):n}function o(){E+=null!=l.sL?function(){var e="string"==typeof l.sL;if(e&&!N[l.sL])return _(g);var n=e?C(l.sL,g,!0,f[l.sL]):O(g,l.sL.length?l.sL:void 0);return 0")+'"');return g+=n,n.length||1}var s=B(e);if(!s)throw new Error('Unknown language: "'+e+'"');m(s);var a,l=t||s,f={},E="";for(a=l;a!==s;a=a.parent)a.cN&&(E=c(a.cN,"",!0)+E);var g="",R=0;try{for(var d,p,M=0;l.t.lastIndex=M,d=l.t.exec(n);)p=r(n.substring(M,d.index),d[0]),M=d.index+p;for(r(n.substr(M)),a=l;a.parent;a=a.parent)a.cN&&(E+=b);return{r:R,value:E,language:e,top:l}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{r:0,value:_(n)};throw e}}function O(t,e){e=e||h.languages||u(N);var r={r:0,value:_(t)},a=r;return e.filter(B).filter(M).forEach(function(e){var n=C(e,t,!1);n.language=e,n.r>a.r&&(a=n),n.r>r.r&&(a=r,r=n)}),a.language&&(r.second_best=a),r}function d(e){return h.tabReplace||h.useBR?e.replace(t,function(e,n){return h.useBR&&"\n"===e?"
":h.tabReplace?n.replace(/\t/g,h.tabReplace):""}):e}function o(e){var n,t,r,a,i,o=function(e){var n,t,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=s.exec(i))return B(t[1])?t[1]:"no-highlight";for(n=0,r=(i=i.split(/\s+/)).length;n/g,"\n"):n=e,i=n.textContent,r=o?C(o,i,!0):O(i),(t=R(n)).length&&((a=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=r.value,r.value=function(e,n,t){var r=0,a="",i=[];function o(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset"}function u(e){a+=""}function s(e){("start"===e.event?c:u)(e.node)}for(;e.length||n.length;){var l=o();if(a+=_(t.substring(r,l[0].offset)),r=l[0].offset,l===e){for(i.reverse().forEach(u);s(l.splice(0,1)[0]),(l=o())===e&&l.length&&l[0].offset===r;);i.reverse().forEach(c)}else"start"===l[0].event?i.push(l[0].node):i.pop(),s(l.splice(0,1)[0])}return a+_(t.substr(r))}(t,R(a),i)),r.value=d(r.value),e.innerHTML=r.value,e.className=function(e,n,t){var r=n?c[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}(e.className,o,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function p(){if(!p.called){p.called=!0;var e=document.querySelectorAll("pre code");f.forEach.call(e,o)}}function B(e){return e=(e||"").toLowerCase(),N[e]||N[c[e]]}function M(e){var n=B(e);return n&&!n.disableAutodetect}return a.highlight=C,a.highlightAuto=O,a.fixMarkup=d,a.highlightBlock=o,a.configure=function(e){h=g(h,e)},a.initHighlighting=p,a.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",p,!1),addEventListener("load",p,!1)},a.registerLanguage=function(n,e){var t=N[n]=e(a);i(t),t.aliases&&t.aliases.forEach(function(e){c[e]=n})},a.listLanguages=function(){return u(N)},a.getLanguage=B,a.autoDetection=M,a.inherit=g,a.IR=a.IDENT_RE="[a-zA-Z]\\w*",a.UIR=a.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",a.NR=a.NUMBER_RE="\\b\\d+(\\.\\d+)?",a.CNR=a.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",a.BNR=a.BINARY_NUMBER_RE="\\b(0b[01]+)",a.RSR=a.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",a.BE=a.BACKSLASH_ESCAPE={b:"\\\\[\\s\\S]",r:0},a.ASM=a.APOS_STRING_MODE={cN:"string",b:"'",e:"'",i:"\\n",c:[a.BE]},a.QSM=a.QUOTE_STRING_MODE={cN:"string",b:'"',e:'"',i:"\\n",c:[a.BE]},a.PWM=a.PHRASAL_WORDS_MODE={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},a.C=a.COMMENT=function(e,n,t){var r=a.inherit({cN:"comment",b:e,e:n,c:[]},t||{});return r.c.push(a.PWM),r.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),r},a.CLCM=a.C_LINE_COMMENT_MODE=a.C("//","$"),a.CBCM=a.C_BLOCK_COMMENT_MODE=a.C("/\\*","\\*/"),a.HCM=a.HASH_COMMENT_MODE=a.C("#","$"),a.NM=a.NUMBER_MODE={cN:"number",b:a.NR,r:0},a.CNM=a.C_NUMBER_MODE={cN:"number",b:a.CNR,r:0},a.BNM=a.BINARY_NUMBER_MODE={cN:"number",b:a.BNR,r:0},a.CSSNM=a.CSS_NUMBER_MODE={cN:"number",b:a.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},a.RM=a.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[a.BE,{b:/\[/,e:/\]/,r:0,c:[a.BE]}]},a.TM=a.TITLE_MODE={cN:"title",b:a.IR,r:0},a.UTM=a.UNDERSCORE_TITLE_MODE={cN:"title",b:a.UIR,r:0},a.METHOD_GUARD={b:"\\.\\s*"+a.UIR,r:0},a});hljs.registerLanguage("ocaml",function(e){return{aliases:["ml"],k:{keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref",literal:"true false"},i:/\/\/|>>/,l:"[a-z_]\\w*!?",c:[{cN:"literal",b:"\\[(\\|\\|)?\\]|\\(\\)",r:0},e.C("\\(\\*","\\*\\)",{c:["self"]}),{cN:"symbol",b:"'[A-Za-z_](?!')[\\w']*"},{cN:"type",b:"`[A-Z][\\w']*"},{cN:"type",b:"\\b[A-Z][\\w']*",r:0},{b:"[a-z_]\\w*'[\\w']*",r:0},e.inherit(e.ASM,{cN:"string",r:0}),e.inherit(e.QSM,{i:null}),{cN:"number",b:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",r:0},{b:/[-=]>/}]}});hljs.registerLanguage("reasonml",function(r){var e="~?[a-z$_][0-9a-zA-Z$_]*",a="`?[A-Z$_][0-9a-zA-Z$_]*",c="("+["||","&&","++","**","+.","*","/","*.","/.","...","|>"].map(function(r){return r.split("").map(function(r){return"\\"+r}).join("")}).join("|")+"|==|===)",n="\\s+"+c+"\\s+",t={keyword:"and as asr assert begin class constraint do done downto else end exception externalfor fun function functor if in include inherit initializerland lazy let lor lsl lsr lxor match method mod module mutable new nonrecobject of open or private rec sig struct then to try type val virtual when while with",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ",literal:"true false"},i="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",s={cN:"number",r:0,v:[{b:i},{b:"\\(\\-"+i+"\\)"}]},b={cN:"operator",r:0,b:c},o=[{cN:"identifier",r:0,b:e},b,s],l=[r.QSM,b,{cN:"module",b:"\\b"+a,rB:!0,e:".",c:[{cN:"identifier",b:a,r:0}]}],u=[{cN:"module",b:"\\b"+a,rB:!0,e:".",r:0,c:[{cN:"identifier",b:a,r:0}]}],_={cN:"function",r:0,k:t,v:[{b:"\\s(\\(\\.?.*?\\)|"+e+")\\s*=>",e:"\\s*=>",rB:!0,r:0,c:[{cN:"params",v:[{b:e},{b:"~?[a-z$_][0-9a-zA-Z$_]*(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?"},{b:/\(\s*\)/}]}]},{b:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",e:"\\s=>",rB:!0,r:0,c:[{cN:"params",r:0,v:[{b:e,e:"(,|\\n|\\))",r:0,c:[b,{cN:"typing",b:":",e:"(,|\\n)",rB:!0,r:0,c:u}]}]}]},{b:"\\(\\.\\s"+e+"\\)\\s*=>"}]};l.push(_);var N={cN:"constructor",b:a+"\\(",e:"\\)",i:"\\n",k:t,c:[r.QSM,b,{cN:"params",b:"\\b"+e}]},d={cN:"pattern-match",b:"\\|",rB:!0,k:t,e:"=>",r:0,c:[N,b,{r:0,cN:"constructor",b:a}]},z={cN:"module-access",k:t,rB:!0,v:[{b:"\\b("+a+"\\.)+"+e},{b:"\\b("+a+"\\.)+\\(",e:"\\)",rB:!0,c:[_,{b:"\\(",e:"\\)",skip:!0}].concat(l)},{b:"\\b("+a+"\\.)+{",e:"}"}],c:l};return u.push(z),{aliases:["re"],k:t,i:"(:\\-|:=|\\${|\\+=)",c:[r.C("/\\*","\\*/",{i:"^(\\#,\\/\\/)"}),{cN:"character",b:"'(\\\\[^']+|[^'])'",i:"\\n",r:0},r.QSM,{cN:"literal",b:"\\(\\)",r:0},{cN:"literal",b:"\\[\\|",e:"\\|\\]",r:0,c:o},{cN:"literal",b:"\\[",e:"\\]",r:0,c:o},N,{cN:"operator",b:n,i:"\\-\\->",r:0},s,r.CLCM,d,_,{cN:"module-def",b:"\\bmodule\\s+"+e+"\\s+"+a+"\\s+=\\s+{",e:"}",rB:!0,k:t,r:0,c:[{cN:"module",r:0,b:a},{b:"{",e:"}",skip:!0}].concat(l)},z]}}); \ No newline at end of file diff --git a/dev/index.html b/dev/index.html index 05854661..fb614a0d 100644 --- a/dev/index.html +++ b/dev/index.html @@ -11,7 +11,7 @@

OCaml package documentation

    -
  1. containers 2.5
  2. +
  3. containers 2.6.1
diff --git a/dev/odoc.css b/dev/odoc.css index c86c417e..c80edffa 100644 --- a/dev/odoc.css +++ b/dev/odoc.css @@ -1,7 +1,7 @@ @charset "UTF-8"; /* Copyright (c) 2016 The odoc contributors. All rights reserved. Distributed under the ISC license, see terms at the end of the file. - odoc 1.4.0 */ + odoc 1.4.2 */ /* Fonts */ @import url('https://fonts.googleapis.com/css?family=Fira+Mono:400,500');