Thanks for your help. It was very useful. Though in comparison with C or C++ I can't figure out so clear the syntax. Maybe it has to do with the syntactic Sugar of each Language. I 'll give you a similar example I saw in a book for Haskel
The following program just returns the value of the position of a datatype Tuple which can hold one or two elements. data Tuple a b = One a | Two a b tuple1 (One a)= Just a tuple1 (Two a b) = Just a tuple2 (One a) = Nothing tuple2 (Two a b) = Just b The corresponding Version in C++, which seems to be more appropriate, would be template<class A, class B> struct Tuple { enum (One, Two) tag; union { A either_one; struct nOne { A either_two B two; }; }; } Am I wrong. If not, how can I use it in the corresponding function in C++? I seems realy strange, and I'm confused. Surely a solution to this would be to use the standard types of Haskel for tuples and check out each time if I have just a number or a tuple. But this is how somebody thinks in imperative languages. Functional programming is something more, isn't it? Sorry for beeing so naive, but although unions, enum, structure are just some tools in C, surely something more in C++, in Haskell they are seem to be a standard. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe