[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Yann_Régis-Gianas <yann@l...> |
| Subject: | Re: [Caml-list] Module/Functor modelisation |
On Wed, Aug 14, 2002 at 09:58:06AM +0100, Johan Baltié wrote: > Mon probleme tient effectivement dans l'utilisation d'un autre functor. > > Appellons le GenericTraverse: > > module GenericTraverse = > functor (T : Traverse) -> > functor (Av: Visitor) -> > struct > ..... > let pattern_action p data = > match p with > | PatternAction(pat, act) -> > T.action act (T.pattern pat data) > | PatternActionList(pa1, pa2) -> > T.pattern_action pa2 (T.pattern_action pa1 data) > .... > end > > > Le probleme est maintenant comment l'utiliser ??? > > module PostfixTraverse = ???? > struct > > let pattern_action p data = > let output = Av.pattern_action p data > in > GenericTraverse.pattern_action p output > end > Ce que tu es en train de faire, ca s'appelle des modules mixins et malheuresement Objective Caml ne le gère pas pour le moment. Par contre, est-ce que tu ne voudrais pas faire un truc du style: module type TraverseWithoutPatternAction = sig (* ce qui ne dépend pas de pattern_action *) end module PostfixTraverse (T : TraverseWithoutPatternAction) (Av: Visitor) = struct let pattern_action p data = (* ... *) end module type TraverseType = sig val pattern_action : (* .. *) end module FinalTraverse (T : TraverseType) = struct (* ce qui dépend de pattern action *) end -- Yann Régis-Gianas. ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners