Project

General

Profile

« Previous | Next » 

Revision ca7ff3f7

Added by Lélio Brun 8 months ago

reformatting

View differences:

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