module Extensible: Generic_core_extensible
exception Type_pattern_match_failure of string
f
field of a Generic_core_extensible.closure
when there is no
case registered to deal with the type witness.exception Type_pattern_overwrite of string
ext
field of a Generic_core_extensible.closure
when trying to extend a type indexed function
with a case for a pattern that is already covered.type 'b
ty_fun = {
|
f : |
'b
is the code for a parametric type 'a f
such that 'b ty_fun
is equivalent to for all 'a . 'a f
type 'b
closure = {
|
f : |
(* | f : applies the extensible function.Raises Type_pattern_match_failure when the type index doesn't
match any of the patterns in the collection. | *) |
|
ext : |
(* | ext : extends the function with a new case. We must
provide a type pattern, (example: List Any ). The
ty_fun provided is only expected to handle types
matching with the pattern. Effectful.Raises Pattern_overwrite when called with a type pattern that
was already registered. | *) |
val create : string -> 'f closure
create name
, creates a new closure initially empty:
calling f
will raise
Type_pattern_match_failure
. The name is used in the exception messages. Effectful.