[
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: | brogoff@s... |
| Subject: | Re: [Caml-list] dynamic dispatching |
On Tue, 10 Jun 2003, Mirko Aigner wrote: > Hi !! > > I'm new to OCAML and have the following question: > > I have to reimplement some code written in C++. > In C++ there is used a desgin pattern named Visitor, which i used > instead of a dynamic_cast. > My question: is it generally possible to decide at runtime, if an object > is of a specific type ?! The simplest answer to this question is, "no". There is no Java style instanceof in the language. If this is something you do frequently, you would instead use sum types instead of classes. If you insist on using classes, you can program the visitor pattern easily in OCaml. Even though there is no method overloading, there are plenty of other features which make up for it. If you decide to use sum types, you may be troubled by inability to extend the sum type without rewriting code. By using polymorphic variants, and hand coding the open recursion using a fixpoint function, you can get around these problems. The basic idea is here http://wwwfun.kurims.kyoto-u.ac.jp/~garrigue/papers/fose2000.html but be warned; if you're an FPL beginner this will make your eyes bleed and your brains drip out your ears. I suggest that you try to solve the problem in the core language (no OO or polymorphic variants) + modules before anything else. > What I have read in the reference manual and some website's dynamic > typechecking is not supported, means this dynamic dispatching as well ?! > > I'm grateful for any answers ( positive or negative ) Good programming language choice, welcome aboard. -- Brian ------------------- 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