Salut,
Je suis en train d’étendre un programme et je me retrouve dans la situation pas cool où j’aurai bien envie d’avoir une dépendance croisée. En gros, quelque chose comme:
fragile.mli/ml:
(* MLI *)
type abstract
val operation: unit -> unit
val query: abstract -> unit
(* ML *)
type abstract = {
not_important: int
}
let hidden () =
let a = { not_important = 42 } in
(* B.register a ; <- ce que j'aimerais pouvoir faire *)
a
let operation () =
ignore( hidden () ) (* en vrai forcément, on fait des trucs avec *)
let query some_abstract_thing = () (* et en vrai on a une info intéressante ici *)
Et table.ml:
let register some_abstract_thing =
(* mettre ça dans une table *)
let query params =
let some_abstract_thing = (* collecter le bon dans la table *) in
Fragile.query some_abstract_thing (* pour récupérer l'info planquée chez fragile *)
Dans l’idée, j’aimerai bien éviter de faire gonfler encore le module Fragile, ou même simplement de faire des modifications trop conséquente dessus parce qu’il est assez critique, mais pour ça je me retrouve dans la solution pas jolie d’une inter-dépendance (à cause de l’opération commentée plus haut dans Fragile).
Du coup si quelqu’un a une manière classique de résoudre ça.
Merci d’avance.
+0
-0