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

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to