Revision ca7ff3f7
Added by Lélio Brun over 1 year ago
src/tools/stateflow/semantics/memo.mli | ||
---|---|---|
1 |
|
|
2 | 1 |
(* Le type abstrait des tables utilisées dans la memoization des fonctions. *) |
3 | 2 |
(* Permet de mémoriser des appels de fonctions efficacement sous la forme *) |
4 | 3 |
(* de couples (argument de type 'a, résultat de type 'b). *) |
5 | 4 |
(* Chaque table devra être associée à une fonction unique. *) |
6 |
type ('a, 'b) t;; |
|
7 |
|
|
5 |
type ('a, 'b) t |
|
8 | 6 |
|
9 | 7 |
(* Création d'une table vide. *) |
10 | 8 |
(* Paramètres : *) |
... | ... | |
12 | 10 |
(* Résultat : *) |
13 | 11 |
(* - une table vide destinée à mémoriser uniquement les appels *) |
14 | 12 |
(* d'une fonction quelconque. *) |
15 |
val create : unit -> ('a, 'b) t;;
|
|
13 |
val create : unit -> ('a, 'b) t |
|
16 | 14 |
|
17 |
val reset : ('a, 'b) t -> unit;;
|
|
15 |
val reset : ('a, 'b) t -> unit |
|
18 | 16 |
|
19 | 17 |
(* Utilisation d'une version "memoizée" d'une fonction à un paramètre. *) |
20 | 18 |
(* Paramètres : *) |
... | ... | |
30 | 28 |
(* Erreur : *) |
31 | 29 |
(* - exception Failure levée en cas d'utilisation d'une même table *) |
32 | 30 |
(* avec plusieurs fonctions différentes. *) |
33 |
val apply : ('a, 'b) t -> ('a -> 'b) -> ('a -> 'b);;
|
|
31 |
val apply : ('a, 'b) t -> ('a -> 'b) -> 'a -> 'b
|
|
34 | 32 |
|
35 | 33 |
(* Utilisation d'une version "memoizée" d'une fonction à deux paramètres. *) |
36 | 34 |
(* Paramètres : *) |
... | ... | |
43 | 41 |
(* Erreur : *) |
44 | 42 |
(* - exception Failure levée en cas d'utilisation d'une même table *) |
45 | 43 |
(* avec plusieurs fonctions différentes. *) |
46 |
val apply2 : ('a * 'b, 'c) t -> ('a -> 'b -> 'c) -> ('a -> 'b -> 'c);;
|
|
44 |
val apply2 : ('a * 'b, 'c) t -> ('a -> 'b -> 'c) -> 'a -> 'b -> 'c
|
|
47 | 45 |
|
48 |
val apply3 : ('a * 'b * 'c, 'd) t -> ('a -> 'b -> 'c -> 'd) -> ('a -> 'b -> 'c -> 'd);; |
|
46 |
val apply3 : |
|
47 |
('a * 'b * 'c, 'd) t -> ('a -> 'b -> 'c -> 'd) -> 'a -> 'b -> 'c -> 'd |
|
49 | 48 |
|
50 |
val fold : ('a, 'b) t -> ('a -> 'b -> 'c -> 'c) -> 'c -> 'c;; |
|
49 |
val fold : ('a, 'b) t -> ('a -> 'b -> 'c -> 'c) -> 'c -> 'c |
Also available in: Unified diff
reformatting