mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
CCPervasives module, replacing modules of the standard library
This commit is contained in:
parent
dda1dda27d
commit
059e0b064d
5 changed files with 155 additions and 68 deletions
|
|
@ -2,11 +2,13 @@
|
|||
#thread
|
||||
#directory "_build/core";;
|
||||
#directory "_build/misc";;
|
||||
#directory "_build/pervasives/";;
|
||||
#directory "_build/string";;
|
||||
#directory "_build/threads";;
|
||||
#directory "_build/tests/";;
|
||||
#load "containers.cma";;
|
||||
#load "containers_string.cma";;
|
||||
#load "containers_pervasives.cma";;
|
||||
#load "containers_misc.cma";;
|
||||
#thread;;
|
||||
#load "containers_thread.cma";;
|
||||
|
|
|
|||
|
|
@ -12,7 +12,10 @@ ocaml-containers
|
|||
KMP search algorithm, and a few naive utils). Again, modules are independent
|
||||
and sometimes parametric on the string and char types (so they should
|
||||
be able to deal with your favorite unicode library).
|
||||
3. Random stuff, with *NO* *GUARANTEE* of even being barely usable or tested,
|
||||
3. A drop-in replacement to the standard library, `containers.pervasives`,
|
||||
that defined a `CCPervasives` module intented to be opened to extend some
|
||||
modules of the stdlib.
|
||||
4. Random stuff, with *NO* *GUARANTEE* of even being barely usable or tested,
|
||||
in other dirs (mostly `misc` but also `lwt` and `threads`). It's where I
|
||||
tend to write code when I want to test some idea, so half the modules (at
|
||||
least) are unfinished or don't really work.
|
||||
|
|
|
|||
7
_oasis
7
_oasis
|
|
@ -58,6 +58,13 @@ Library "containers_string"
|
|||
FindlibName: string
|
||||
FindlibParent: containers
|
||||
|
||||
Library "containers_pervasives"
|
||||
Path: pervasives
|
||||
Modules: CCPervasives
|
||||
BuildDepends: containers
|
||||
FindlibName: pervasives
|
||||
FindlibParent: containers
|
||||
|
||||
Library "containers_misc"
|
||||
Path: misc
|
||||
Pack: true
|
||||
|
|
|
|||
161
_tags
161
_tags
|
|
@ -1,5 +1,5 @@
|
|||
# OASIS_START
|
||||
# DO NOT EDIT (digest: 1907902d29ff8cd23331587c97b0f346)
|
||||
# DO NOT EDIT (digest: fbebfae7c483734f1144067d9ae9954b)
|
||||
# Ignore VCS directories, you can use the same kind of rule outside
|
||||
# OASIS_START/STOP if you want to exclude directories that contains
|
||||
# useless stuff for the build process
|
||||
|
|
@ -14,61 +14,56 @@
|
|||
"_darcs": -traverse
|
||||
"_darcs": not_hygienic
|
||||
# Library containers
|
||||
"containers.cmxs": use_containers
|
||||
"cache.cmx": for-pack(Containers)
|
||||
"deque.cmx": for-pack(Containers)
|
||||
"gen.cmx": for-pack(Containers)
|
||||
"fHashtbl.cmx": for-pack(Containers)
|
||||
"fQueue.cmx": for-pack(Containers)
|
||||
"flatHashtbl.cmx": for-pack(Containers)
|
||||
"hashset.cmx": for-pack(Containers)
|
||||
"heap.cmx": for-pack(Containers)
|
||||
"lazyGraph.cmx": for-pack(Containers)
|
||||
"persistentGraph.cmx": for-pack(Containers)
|
||||
"persistentHashtbl.cmx": for-pack(Containers)
|
||||
"pHashtbl.cmx": for-pack(Containers)
|
||||
"sequence.cmx": for-pack(Containers)
|
||||
"skipList.cmx": for-pack(Containers)
|
||||
"splayTree.cmx": for-pack(Containers)
|
||||
"splayMap.cmx": for-pack(Containers)
|
||||
"univ.cmx": for-pack(Containers)
|
||||
"vector.cmx": for-pack(Containers)
|
||||
"bij.cmx": for-pack(Containers)
|
||||
"piCalculus.cmx": for-pack(Containers)
|
||||
"bencode.cmx": for-pack(Containers)
|
||||
"sexp.cmx": for-pack(Containers)
|
||||
"RAL.cmx": for-pack(Containers)
|
||||
"multiSet.cmx": for-pack(Containers)
|
||||
"unionFind.cmx": for-pack(Containers)
|
||||
"smallSet.cmx": for-pack(Containers)
|
||||
"leftistheap.cmx": for-pack(Containers)
|
||||
"absSet.cmx": for-pack(Containers)
|
||||
"CSM.cmx": for-pack(Containers)
|
||||
"multiMap.cmx": for-pack(Containers)
|
||||
"actionMan.cmx": for-pack(Containers)
|
||||
"BV.cmx": for-pack(Containers)
|
||||
"qCheck.cmx": for-pack(Containers)
|
||||
"bencodeOnDisk.cmx": for-pack(Containers)
|
||||
"show.cmx": for-pack(Containers)
|
||||
"tTree.cmx": for-pack(Containers)
|
||||
"hGraph.cmx": for-pack(Containers)
|
||||
"automaton.cmx": for-pack(Containers)
|
||||
"conv.cmx": for-pack(Containers)
|
||||
"levenshtein.cmx": for-pack(Containers)
|
||||
"bidir.cmx": for-pack(Containers)
|
||||
"iteratee.cmx": for-pack(Containers)
|
||||
"ty.cmx": for-pack(Containers)
|
||||
"tell.cmx": for-pack(Containers)
|
||||
"bencodeStream.cmx": for-pack(Containers)
|
||||
"ratTerm.cmx": for-pack(Containers)
|
||||
"cause.cmx": for-pack(Containers)
|
||||
"KMP.cmx": for-pack(Containers)
|
||||
"circList.cmx": for-pack(Containers)
|
||||
<*.ml{,i}>: package(unix)
|
||||
"core/containers.cmxs": use_containers
|
||||
# Library containers_string
|
||||
"string/containers_string.cmxs": use_containers_string
|
||||
"string/KMP.cmx": for-pack(Containers_string)
|
||||
"string/levenshtein.cmx": for-pack(Containers_string)
|
||||
# Library containers_misc
|
||||
"misc/containers_misc.cmxs": use_containers_misc
|
||||
"misc/cache.cmx": for-pack(Containers_misc)
|
||||
"misc/fHashtbl.cmx": for-pack(Containers_misc)
|
||||
"misc/flatHashtbl.cmx": for-pack(Containers_misc)
|
||||
"misc/hashset.cmx": for-pack(Containers_misc)
|
||||
"misc/heap.cmx": for-pack(Containers_misc)
|
||||
"misc/lazyGraph.cmx": for-pack(Containers_misc)
|
||||
"misc/persistentGraph.cmx": for-pack(Containers_misc)
|
||||
"misc/pHashtbl.cmx": for-pack(Containers_misc)
|
||||
"misc/skipList.cmx": for-pack(Containers_misc)
|
||||
"misc/splayTree.cmx": for-pack(Containers_misc)
|
||||
"misc/splayMap.cmx": for-pack(Containers_misc)
|
||||
"misc/univ.cmx": for-pack(Containers_misc)
|
||||
"misc/bij.cmx": for-pack(Containers_misc)
|
||||
"misc/piCalculus.cmx": for-pack(Containers_misc)
|
||||
"misc/bencode.cmx": for-pack(Containers_misc)
|
||||
"misc/sexp.cmx": for-pack(Containers_misc)
|
||||
"misc/RAL.cmx": for-pack(Containers_misc)
|
||||
"misc/unionFind.cmx": for-pack(Containers_misc)
|
||||
"misc/smallSet.cmx": for-pack(Containers_misc)
|
||||
"misc/absSet.cmx": for-pack(Containers_misc)
|
||||
"misc/CSM.cmx": for-pack(Containers_misc)
|
||||
"misc/actionMan.cmx": for-pack(Containers_misc)
|
||||
"misc/bencodeOnDisk.cmx": for-pack(Containers_misc)
|
||||
"misc/tTree.cmx": for-pack(Containers_misc)
|
||||
"misc/printBox.cmx": for-pack(Containers_misc)
|
||||
"misc/hGraph.cmx": for-pack(Containers_misc)
|
||||
"misc/automaton.cmx": for-pack(Containers_misc)
|
||||
"misc/conv.cmx": for-pack(Containers_misc)
|
||||
"misc/bidir.cmx": for-pack(Containers_misc)
|
||||
"misc/iteratee.cmx": for-pack(Containers_misc)
|
||||
"misc/bTree.cmx": for-pack(Containers_misc)
|
||||
"misc/ty.cmx": for-pack(Containers_misc)
|
||||
"misc/tell.cmx": for-pack(Containers_misc)
|
||||
"misc/bencodeStream.cmx": for-pack(Containers_misc)
|
||||
"misc/ratTerm.cmx": for-pack(Containers_misc)
|
||||
"misc/cause.cmx": for-pack(Containers_misc)
|
||||
"misc/AVL.cmx": for-pack(Containers_misc)
|
||||
"misc/parseReact.cmx": for-pack(Containers_misc)
|
||||
<misc/*.ml{,i}>: package(unix)
|
||||
<misc/*.ml{,i}>: use_containers
|
||||
# Library containers_thread
|
||||
"threads/containers_thread.cmxs": use_containers_thread
|
||||
<threads/*.ml{,i}>: package(threads)
|
||||
<threads/*.ml{,i}>: package(unix)
|
||||
<threads/*.ml{,i}>: use_containers
|
||||
# Library containers_lwt
|
||||
"lwt/containers_lwt.cmxs": use_containers_lwt
|
||||
|
|
@ -78,50 +73,82 @@
|
|||
<lwt/*.ml{,i}>: package(lwt.unix)
|
||||
<lwt/*.ml{,i}>: package(unix)
|
||||
<lwt/*.ml{,i}>: use_containers
|
||||
<lwt/*.ml{,i}>: use_containers_misc
|
||||
# Library containers_cgi
|
||||
"cgi/containers_cgi.cmxs": use_containers_cgi
|
||||
<cgi/*.ml{,i}>: package(CamlGI)
|
||||
<cgi/*.ml{,i}>: package(unix)
|
||||
<cgi/*.ml{,i}>: use_containers
|
||||
# Executable benchs
|
||||
"tests/benchs.native": package(bench)
|
||||
"tests/benchs.native": package(unix)
|
||||
"tests/benchs.native": use_containers
|
||||
"tests/benchs.native": use_containers_misc
|
||||
"tests/benchs.native": use_containers_string
|
||||
<tests/*.ml{,i}>: package(bench)
|
||||
<tests/*.ml{,i}>: use_containers_string
|
||||
# Executable bench_conv
|
||||
"tests/bench_conv.native": package(benchmark)
|
||||
"tests/bench_conv.native": package(unix)
|
||||
"tests/bench_conv.native": use_containers
|
||||
# Executable bench_batch
|
||||
"tests/bench_batch.native": package(benchmark)
|
||||
"tests/bench_batch.native": use_containers
|
||||
<tests/*.ml{,i}>: package(benchmark)
|
||||
# Executable bench_hash
|
||||
"tests/bench_hash.native": package(unix)
|
||||
"tests/bench_hash.native": use_containers
|
||||
"tests/bench_hash.native": use_containers_misc
|
||||
<tests/*.ml{,i}>: package(unix)
|
||||
<tests/*.ml{,i}>: use_containers_misc
|
||||
# Executable test_levenshtein
|
||||
"tests/test_levenshtein.native": package(qcheck)
|
||||
"tests/test_levenshtein.native": package(unix)
|
||||
"tests/test_levenshtein.native": use_containers
|
||||
<tests/*.ml{,i}>: package(qcheck)
|
||||
# Executable test_lwt
|
||||
<tests/lwt/test_Behavior.{native,byte}>: package(lwt)
|
||||
<tests/lwt/test_Behavior.{native,byte}>: package(lwt.unix)
|
||||
<tests/lwt/test_Behavior.{native,byte}>: package(oUnit)
|
||||
<tests/lwt/test_Behavior.{native,byte}>: package(unix)
|
||||
<tests/lwt/test_Behavior.{native,byte}>: use_containers
|
||||
<tests/lwt/test_Behavior.{native,byte}>: use_containers_lwt
|
||||
<tests/lwt/test_Behavior.{native,byte}>: use_containers_misc
|
||||
<tests/lwt/*.ml{,i}>: package(lwt)
|
||||
<tests/lwt/*.ml{,i}>: package(lwt.unix)
|
||||
<tests/lwt/*.ml{,i}>: package(oUnit)
|
||||
<tests/lwt/*.ml{,i}>: package(unix)
|
||||
<tests/lwt/*.ml{,i}>: use_containers
|
||||
<tests/lwt/*.ml{,i}>: use_containers_lwt
|
||||
<tests/lwt/*.ml{,i}>: use_containers_misc
|
||||
# Executable test_threads
|
||||
<tests/threads/test_future.{native,byte}>: package(oUnit)
|
||||
<tests/threads/test_future.{native,byte}>: package(threads)
|
||||
<tests/threads/test_future.{native,byte}>: use_containers
|
||||
<tests/threads/test_future.{native,byte}>: use_containers_thread
|
||||
<tests/threads/*.ml{,i}>: package(oUnit)
|
||||
<tests/threads/*.ml{,i}>: package(threads)
|
||||
<tests/threads/*.ml{,i}>: use_containers
|
||||
<tests/threads/*.ml{,i}>: use_containers_thread
|
||||
# Executable run_tests
|
||||
"tests/run_tests.native": package(lwt)
|
||||
"tests/run_tests.native": package(lwt.unix)
|
||||
"tests/run_tests.native": package(oUnit)
|
||||
"tests/run_tests.native": package(threads)
|
||||
"tests/run_tests.native": package(unix)
|
||||
"tests/run_tests.native": package(qcheck)
|
||||
"tests/run_tests.native": use_containers
|
||||
<tests/*.ml{,i}>: package(lwt)
|
||||
<tests/*.ml{,i}>: package(lwt.unix)
|
||||
<tests/*.ml{,i}>: package(oUnit)
|
||||
<tests/*.ml{,i}>: package(threads)
|
||||
<tests/*.ml{,i}>: package(unix)
|
||||
<tests/*.ml{,i}>: package(qcheck)
|
||||
<tests/*.ml{,i}>: use_containers
|
||||
# Executable web_pwd
|
||||
"examples/cgi/web_pwd.byte": package(CamlGI)
|
||||
"examples/cgi/web_pwd.byte": package(threads)
|
||||
"examples/cgi/web_pwd.byte": package(unix)
|
||||
"examples/cgi/web_pwd.byte": use_containers
|
||||
"examples/cgi/web_pwd.byte": use_containers_cgi
|
||||
<examples/cgi/*.ml{,i}>: package(CamlGI)
|
||||
<examples/cgi/*.ml{,i}>: package(threads)
|
||||
<examples/cgi/*.ml{,i}>: package(unix)
|
||||
<examples/cgi/*.ml{,i}>: use_containers
|
||||
<examples/cgi/*.ml{,i}>: use_containers_cgi
|
||||
# Executable lambda
|
||||
"examples/lambda.byte": package(unix)
|
||||
"examples/lambda.byte": use_containers
|
||||
"examples/lambda.byte": use_containers_misc
|
||||
<examples/*.ml{,i}>: package(unix)
|
||||
<examples/*.ml{,i}>: use_containers
|
||||
<examples/*.ml{,i}>: use_containers_misc
|
||||
# OASIS_STOP
|
||||
<tests/*.ml{,i}>: thread
|
||||
<threads/*.ml{,i}>: thread
|
||||
|
|
|
|||
48
pervasives/CCPervasives.ml
Normal file
48
pervasives/CCPervasives.ml
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
|
||||
(*
|
||||
copyright (c) 2013-2014, simon cruanes
|
||||
all rights reserved.
|
||||
|
||||
redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer. redistributions in binary
|
||||
form must reproduce the above copyright notice, this list of conditions and the
|
||||
following disclaimer in the documentation and/or other materials provided with
|
||||
the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*)
|
||||
|
||||
(** {1 Drop-In replacement to Stdlib}
|
||||
|
||||
This module is meant to be opened if one doesn't want to use both, say,
|
||||
[List] and [CCList]. Instead, [List] is now an alias to
|
||||
{[struct
|
||||
include List
|
||||
include CCList
|
||||
end
|
||||
]}
|
||||
|
||||
*)
|
||||
|
||||
module Array = struct include Array include CCArray end
|
||||
module Bool = CCBool
|
||||
module Error = CCError
|
||||
module Fun = CCFun
|
||||
module Int = CCInt
|
||||
module List = struct include List include CCList end
|
||||
module Opt = CCOpt
|
||||
module Pair = CCPair
|
||||
module String = struct include String include CCString end
|
||||
module Vector = CCVector
|
||||
Loading…
Add table
Reference in a new issue