J'ai la situation suivante:Foncteurs avec plusieurs arguments en OCaml
module type M = sig type s = ... end
module Make(P: Something) : (M with type s = P.t) = struct
type s = P.t
...
end
qui fonctionne très bien pour générer des modules de type M
qui utilisent une implémentation spécifique des modules de type Something
dans leur mise en œuvre.
Supposons maintenant que j'ai un autre module défini comme
module type AU = sig
val feed : float -> unitv
val nth : int -> (float -> float)
val reset : unit -> unit
end
qui a différentes implémentations
module SUAlg : AU = struct ... end
module MLAlg : AU = struct ... end
module ACEAlg : AU = struct ... end
Le point de la question est que le module M
doit être paramétrées sur deux choses maintenant: un Something
module et un module AU
de sorte que ce soit quelque chose comme
module Make(P: Something) : (M with type s = P.t) = struct
type s = P.t
module Alg = MLAlg (* just an example *)
...
end
mais je voudrais avoir un foncteur générique qui donne un Something
et donné un AU
il produit un module avec les deux choses concrétisées. Y a-t-il un moyen d'obtenir cela facilement?
Étant donné que la syntaxe des foncteurs est assez étrange et que je suis encore jeune, je ne sais pas si ce que je demande peut être résolu d'une manière simple ou non.
Merci d'avance
Existe-t-il une syntaxe différente pour transmettre des arguments au foncteur? Make_LOffset (arg1 arg2)? – stumped
@stumped Bien les arguments seraient module, donc ils ressembleraient 'Arg1' et' Arg2'. La syntaxe est 'Make_LOffset (Arg1) (Arg2)'. J'ai mis à jour la réponse. –