Vladimir Portnykh wrote: > I am trying to define the following types > > data MyStringType a = String deriving (Eq, Ord, Show) > data QADouble a = Double deriving (Eq, Ord, Show)
These are not what you think they are. MyStringType has a phantom type parameter and only one value, which is the constant String (but not of type String). What you actually meant can only be guessed, and I'm not even trying. > So HType can represent strings or doubles. > later I want to do something like the following: > let a1 =QADouble 1 > let a2 =QADouble 2 > let a3 = a1 + a2 data HType = QADouble Double | QAString Double > First, it is not working because Haskell complains about a3. it does not > know how to calculate it. What did you expect? What's the sum of a Double and a String if not an error? You have to define (+), which is already defined. Use some other name and give a definition: QADouble x `plus` QADouble y = ... QADouble x `plus` QAString y = ... QAString x `plus` QAString y = ... QAString x `plus` QADouble y = ... Udo. -- Lieber vom Fels zertrümmert als bei einer Frau verkümmert. -- aus einem Gipfelbuch
signature.asc
Description: Digital signature
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe