module Computation:Internal state builders. Provide ways to implement signaturesig
..end
Project.Computation.OUTPUT
without
directly apply functor Project.Computation.Register
.
Depending on the builder, also provide some additional useful
information.val apply_once : string ->
Project.Computation.t list ->
(unit -> unit) -> (unit -> unit) * Project.Computation.t
apply_once name dep f
returns a closure applying f
only once and the
state internally used. name
and dep
are respectively the name and
the dependencies of the local state created by this function. Should
be used partially applied. If f
raises an exception, then it is
considered as not applied.module type REF_INPUT =sig
..end
module type REF_OUTPUT =sig
..end
Ref
.
module Ref:
module type OPTION_REF_OUTPUT =sig
..end
OptionRef
.
module OptionRef:
module type LIST_REF_OUTPUT =sig
..end
ListRef
.
module ListRef:functor (
Data
:
Project.Datatype.S
) ->
functor (
Info
:
Signature.NAME_DPDS
) ->
LIST_REF_OUTPUT
with type data = Data.t list and type data_in_list = Data.t
Dashtbl are projectified hashtbl in which each binding may have a dependency (not only the full table) and may be used as internal states. By using dashtable, you will have a very fine-grain control over the dependencies.
IMPORTANT:
self
value of a dashtbl into a selection
without also adding its dependencies.rehash
function (see Project.DATATYPE_OUTPUT.rehash
)module type HASHTBL =sig
..end
module type DASHTBL_OUTPUT =sig
..end
module Make_Dashtbl:functor (
H
:
HASHTBL
) ->
functor (
Data
:
Project.Datatype.S
) ->
functor (
Info
:
Signature.NAME_SIZE_DPDS
) ->
DASHTBL_OUTPUT
with type key = H.key and type data = Data.t
module Dashtbl:functor (
Key
:
Hashtbl.HashedType
) ->
functor (
Data
:
Project.Datatype.S
) ->
functor (
Info
:
Signature.NAME_SIZE_DPDS
) ->
DASHTBL_OUTPUT
with type key = Key.t and type data = Data.t
module type WEAK_HASHTBL_OUTPUT =sig
..end
module Make_WeakHashtbl:
Data
from a reference implementation
W
.
module WeakHashtbl:
Data
by using Weak.Make
provided
by the ocaml standard library.
module HashconsTbl:functor (
Data
:
sig
typet
The hashconsed type
val name :string
Name of the hashconsed datatype
val equal_internal :t -> t -> bool
Equality on the datatype internally used by the built table.
val hash_internal :t -> int
Hash function for datatype internally used by the built table.
val initial_values :t list
Pre-existing values stored in the built table and shared by all the existing projects.
end
) ->
IMPORTANT: that is INCORRECT to use projectified hashtables if keys have a
custom rehash
function (see Project.DATATYPE_OUTPUT.rehash
)
module type HASHTBL_OUTPUT =sig
..end
module Make_Hashtbl:functor (
H
:
HASHTBL
) ->
functor (
Data
:
Project.Datatype.S
) ->
functor (
Info
:
Signature.NAME_SIZE_DPDS
) ->
HASHTBL_OUTPUT
with type key = H.key and type data = Data.t
module Hashtbl:functor (
Key
:
Hashtbl.HashedType
) ->
functor (
Data
:
Project.Datatype.S
) ->
functor (
Info
:
Signature.NAME_SIZE_DPDS
) ->
HASHTBL_OUTPUT
with type key = Key.t and type data = Data.t
module type SET =sig
..end
module type SET_REF_OUTPUT =sig
..end
module Make_SetRef:
module SetRef:
module type QUEUE =sig
..end
module Queue:
module Project: