mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-07 03:35:30 -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
|
#thread
|
||||||
#directory "_build/core";;
|
#directory "_build/core";;
|
||||||
#directory "_build/misc";;
|
#directory "_build/misc";;
|
||||||
|
#directory "_build/pervasives/";;
|
||||||
#directory "_build/string";;
|
#directory "_build/string";;
|
||||||
#directory "_build/threads";;
|
#directory "_build/threads";;
|
||||||
#directory "_build/tests/";;
|
#directory "_build/tests/";;
|
||||||
#load "containers.cma";;
|
#load "containers.cma";;
|
||||||
#load "containers_string.cma";;
|
#load "containers_string.cma";;
|
||||||
|
#load "containers_pervasives.cma";;
|
||||||
#load "containers_misc.cma";;
|
#load "containers_misc.cma";;
|
||||||
#thread;;
|
#thread;;
|
||||||
#load "containers_thread.cma";;
|
#load "containers_thread.cma";;
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,10 @@ ocaml-containers
|
||||||
KMP search algorithm, and a few naive utils). Again, modules are independent
|
KMP search algorithm, and a few naive utils). Again, modules are independent
|
||||||
and sometimes parametric on the string and char types (so they should
|
and sometimes parametric on the string and char types (so they should
|
||||||
be able to deal with your favorite unicode library).
|
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
|
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
|
tend to write code when I want to test some idea, so half the modules (at
|
||||||
least) are unfinished or don't really work.
|
least) are unfinished or don't really work.
|
||||||
|
|
|
||||||
7
_oasis
7
_oasis
|
|
@ -58,6 +58,13 @@ Library "containers_string"
|
||||||
FindlibName: string
|
FindlibName: string
|
||||||
FindlibParent: containers
|
FindlibParent: containers
|
||||||
|
|
||||||
|
Library "containers_pervasives"
|
||||||
|
Path: pervasives
|
||||||
|
Modules: CCPervasives
|
||||||
|
BuildDepends: containers
|
||||||
|
FindlibName: pervasives
|
||||||
|
FindlibParent: containers
|
||||||
|
|
||||||
Library "containers_misc"
|
Library "containers_misc"
|
||||||
Path: misc
|
Path: misc
|
||||||
Pack: true
|
Pack: true
|
||||||
|
|
|
||||||
161
_tags
161
_tags
|
|
@ -1,5 +1,5 @@
|
||||||
# OASIS_START
|
# OASIS_START
|
||||||
# DO NOT EDIT (digest: 1907902d29ff8cd23331587c97b0f346)
|
# DO NOT EDIT (digest: fbebfae7c483734f1144067d9ae9954b)
|
||||||
# Ignore VCS directories, you can use the same kind of rule outside
|
# Ignore VCS directories, you can use the same kind of rule outside
|
||||||
# OASIS_START/STOP if you want to exclude directories that contains
|
# OASIS_START/STOP if you want to exclude directories that contains
|
||||||
# useless stuff for the build process
|
# useless stuff for the build process
|
||||||
|
|
@ -14,61 +14,56 @@
|
||||||
"_darcs": -traverse
|
"_darcs": -traverse
|
||||||
"_darcs": not_hygienic
|
"_darcs": not_hygienic
|
||||||
# Library containers
|
# Library containers
|
||||||
"containers.cmxs": use_containers
|
"core/containers.cmxs": use_containers
|
||||||
"cache.cmx": for-pack(Containers)
|
# Library containers_string
|
||||||
"deque.cmx": for-pack(Containers)
|
"string/containers_string.cmxs": use_containers_string
|
||||||
"gen.cmx": for-pack(Containers)
|
"string/KMP.cmx": for-pack(Containers_string)
|
||||||
"fHashtbl.cmx": for-pack(Containers)
|
"string/levenshtein.cmx": for-pack(Containers_string)
|
||||||
"fQueue.cmx": for-pack(Containers)
|
# Library containers_misc
|
||||||
"flatHashtbl.cmx": for-pack(Containers)
|
"misc/containers_misc.cmxs": use_containers_misc
|
||||||
"hashset.cmx": for-pack(Containers)
|
"misc/cache.cmx": for-pack(Containers_misc)
|
||||||
"heap.cmx": for-pack(Containers)
|
"misc/fHashtbl.cmx": for-pack(Containers_misc)
|
||||||
"lazyGraph.cmx": for-pack(Containers)
|
"misc/flatHashtbl.cmx": for-pack(Containers_misc)
|
||||||
"persistentGraph.cmx": for-pack(Containers)
|
"misc/hashset.cmx": for-pack(Containers_misc)
|
||||||
"persistentHashtbl.cmx": for-pack(Containers)
|
"misc/heap.cmx": for-pack(Containers_misc)
|
||||||
"pHashtbl.cmx": for-pack(Containers)
|
"misc/lazyGraph.cmx": for-pack(Containers_misc)
|
||||||
"sequence.cmx": for-pack(Containers)
|
"misc/persistentGraph.cmx": for-pack(Containers_misc)
|
||||||
"skipList.cmx": for-pack(Containers)
|
"misc/pHashtbl.cmx": for-pack(Containers_misc)
|
||||||
"splayTree.cmx": for-pack(Containers)
|
"misc/skipList.cmx": for-pack(Containers_misc)
|
||||||
"splayMap.cmx": for-pack(Containers)
|
"misc/splayTree.cmx": for-pack(Containers_misc)
|
||||||
"univ.cmx": for-pack(Containers)
|
"misc/splayMap.cmx": for-pack(Containers_misc)
|
||||||
"vector.cmx": for-pack(Containers)
|
"misc/univ.cmx": for-pack(Containers_misc)
|
||||||
"bij.cmx": for-pack(Containers)
|
"misc/bij.cmx": for-pack(Containers_misc)
|
||||||
"piCalculus.cmx": for-pack(Containers)
|
"misc/piCalculus.cmx": for-pack(Containers_misc)
|
||||||
"bencode.cmx": for-pack(Containers)
|
"misc/bencode.cmx": for-pack(Containers_misc)
|
||||||
"sexp.cmx": for-pack(Containers)
|
"misc/sexp.cmx": for-pack(Containers_misc)
|
||||||
"RAL.cmx": for-pack(Containers)
|
"misc/RAL.cmx": for-pack(Containers_misc)
|
||||||
"multiSet.cmx": for-pack(Containers)
|
"misc/unionFind.cmx": for-pack(Containers_misc)
|
||||||
"unionFind.cmx": for-pack(Containers)
|
"misc/smallSet.cmx": for-pack(Containers_misc)
|
||||||
"smallSet.cmx": for-pack(Containers)
|
"misc/absSet.cmx": for-pack(Containers_misc)
|
||||||
"leftistheap.cmx": for-pack(Containers)
|
"misc/CSM.cmx": for-pack(Containers_misc)
|
||||||
"absSet.cmx": for-pack(Containers)
|
"misc/actionMan.cmx": for-pack(Containers_misc)
|
||||||
"CSM.cmx": for-pack(Containers)
|
"misc/bencodeOnDisk.cmx": for-pack(Containers_misc)
|
||||||
"multiMap.cmx": for-pack(Containers)
|
"misc/tTree.cmx": for-pack(Containers_misc)
|
||||||
"actionMan.cmx": for-pack(Containers)
|
"misc/printBox.cmx": for-pack(Containers_misc)
|
||||||
"BV.cmx": for-pack(Containers)
|
"misc/hGraph.cmx": for-pack(Containers_misc)
|
||||||
"qCheck.cmx": for-pack(Containers)
|
"misc/automaton.cmx": for-pack(Containers_misc)
|
||||||
"bencodeOnDisk.cmx": for-pack(Containers)
|
"misc/conv.cmx": for-pack(Containers_misc)
|
||||||
"show.cmx": for-pack(Containers)
|
"misc/bidir.cmx": for-pack(Containers_misc)
|
||||||
"tTree.cmx": for-pack(Containers)
|
"misc/iteratee.cmx": for-pack(Containers_misc)
|
||||||
"hGraph.cmx": for-pack(Containers)
|
"misc/bTree.cmx": for-pack(Containers_misc)
|
||||||
"automaton.cmx": for-pack(Containers)
|
"misc/ty.cmx": for-pack(Containers_misc)
|
||||||
"conv.cmx": for-pack(Containers)
|
"misc/tell.cmx": for-pack(Containers_misc)
|
||||||
"levenshtein.cmx": for-pack(Containers)
|
"misc/bencodeStream.cmx": for-pack(Containers_misc)
|
||||||
"bidir.cmx": for-pack(Containers)
|
"misc/ratTerm.cmx": for-pack(Containers_misc)
|
||||||
"iteratee.cmx": for-pack(Containers)
|
"misc/cause.cmx": for-pack(Containers_misc)
|
||||||
"ty.cmx": for-pack(Containers)
|
"misc/AVL.cmx": for-pack(Containers_misc)
|
||||||
"tell.cmx": for-pack(Containers)
|
"misc/parseReact.cmx": for-pack(Containers_misc)
|
||||||
"bencodeStream.cmx": for-pack(Containers)
|
<misc/*.ml{,i}>: package(unix)
|
||||||
"ratTerm.cmx": for-pack(Containers)
|
<misc/*.ml{,i}>: use_containers
|
||||||
"cause.cmx": for-pack(Containers)
|
|
||||||
"KMP.cmx": for-pack(Containers)
|
|
||||||
"circList.cmx": for-pack(Containers)
|
|
||||||
<*.ml{,i}>: package(unix)
|
|
||||||
# Library containers_thread
|
# Library containers_thread
|
||||||
"threads/containers_thread.cmxs": use_containers_thread
|
"threads/containers_thread.cmxs": use_containers_thread
|
||||||
<threads/*.ml{,i}>: package(threads)
|
<threads/*.ml{,i}>: package(threads)
|
||||||
<threads/*.ml{,i}>: package(unix)
|
|
||||||
<threads/*.ml{,i}>: use_containers
|
<threads/*.ml{,i}>: use_containers
|
||||||
# Library containers_lwt
|
# Library containers_lwt
|
||||||
"lwt/containers_lwt.cmxs": use_containers_lwt
|
"lwt/containers_lwt.cmxs": use_containers_lwt
|
||||||
|
|
@ -78,50 +73,82 @@
|
||||||
<lwt/*.ml{,i}>: package(lwt.unix)
|
<lwt/*.ml{,i}>: package(lwt.unix)
|
||||||
<lwt/*.ml{,i}>: package(unix)
|
<lwt/*.ml{,i}>: package(unix)
|
||||||
<lwt/*.ml{,i}>: use_containers
|
<lwt/*.ml{,i}>: use_containers
|
||||||
|
<lwt/*.ml{,i}>: use_containers_misc
|
||||||
# Library containers_cgi
|
# Library containers_cgi
|
||||||
"cgi/containers_cgi.cmxs": use_containers_cgi
|
"cgi/containers_cgi.cmxs": use_containers_cgi
|
||||||
<cgi/*.ml{,i}>: package(CamlGI)
|
<cgi/*.ml{,i}>: package(CamlGI)
|
||||||
<cgi/*.ml{,i}>: package(unix)
|
|
||||||
<cgi/*.ml{,i}>: use_containers
|
<cgi/*.ml{,i}>: use_containers
|
||||||
# Executable benchs
|
# Executable benchs
|
||||||
"tests/benchs.native": package(bench)
|
"tests/benchs.native": package(bench)
|
||||||
"tests/benchs.native": package(unix)
|
"tests/benchs.native": package(unix)
|
||||||
"tests/benchs.native": use_containers
|
"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}>: package(bench)
|
||||||
|
<tests/*.ml{,i}>: use_containers_string
|
||||||
# Executable bench_conv
|
# Executable bench_conv
|
||||||
"tests/bench_conv.native": package(benchmark)
|
"tests/bench_conv.native": package(benchmark)
|
||||||
"tests/bench_conv.native": package(unix)
|
|
||||||
"tests/bench_conv.native": use_containers
|
"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)
|
<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
|
# Executable test_levenshtein
|
||||||
"tests/test_levenshtein.native": package(qcheck)
|
"tests/test_levenshtein.native": package(qcheck)
|
||||||
"tests/test_levenshtein.native": package(unix)
|
|
||||||
"tests/test_levenshtein.native": use_containers
|
"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
|
# 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(oUnit)
|
||||||
"tests/run_tests.native": package(threads)
|
"tests/run_tests.native": package(qcheck)
|
||||||
"tests/run_tests.native": package(unix)
|
|
||||||
"tests/run_tests.native": use_containers
|
"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(oUnit)
|
||||||
<tests/*.ml{,i}>: package(threads)
|
<tests/*.ml{,i}>: package(qcheck)
|
||||||
<tests/*.ml{,i}>: package(unix)
|
|
||||||
<tests/*.ml{,i}>: use_containers
|
<tests/*.ml{,i}>: use_containers
|
||||||
# Executable web_pwd
|
# Executable web_pwd
|
||||||
"examples/cgi/web_pwd.byte": package(CamlGI)
|
"examples/cgi/web_pwd.byte": package(CamlGI)
|
||||||
"examples/cgi/web_pwd.byte": package(threads)
|
"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
|
||||||
"examples/cgi/web_pwd.byte": use_containers_cgi
|
"examples/cgi/web_pwd.byte": use_containers_cgi
|
||||||
<examples/cgi/*.ml{,i}>: package(CamlGI)
|
<examples/cgi/*.ml{,i}>: package(CamlGI)
|
||||||
<examples/cgi/*.ml{,i}>: package(threads)
|
<examples/cgi/*.ml{,i}>: package(threads)
|
||||||
<examples/cgi/*.ml{,i}>: package(unix)
|
|
||||||
<examples/cgi/*.ml{,i}>: use_containers
|
<examples/cgi/*.ml{,i}>: use_containers
|
||||||
<examples/cgi/*.ml{,i}>: use_containers_cgi
|
<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
|
# OASIS_STOP
|
||||||
<tests/*.ml{,i}>: thread
|
<tests/*.ml{,i}>: thread
|
||||||
<threads/*.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