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 [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
