
Not tested but maybe adding an Eq instance to your datatype would help? So
try changing 'deriving (Show)' to 'deriving (Show, Eq)'.
On Fri, Sep 22, 2017 at 2:55 PM, Matt Williams wrote: Apologies - sent too soon - code edited below Dear All, I am having problems writing a polymorphic function. I have a type that has two constructors: data Arg = IndArg {evi::Evi, t1::Treatment, t2::Treatment, out::Outcome,
dir::Direction}
| MetaArg {target::EviType}
deriving (Show) I have a function checks for conflict: checkConflict :: Arg -> Arg -> Bool
checkConflict a b = if t1 a == t1 b && t2 a == t2 b && dir a /= dir b
then True
else False However, I can't make this work with both types of Argument - if I pass
it MetaArg, it raises an error. In another language, I would write something like: checkConflict(ArgA,ArgB): if type(ArgA) == IndArg:
<do this>
elif type(ArgA) == MetaArg:
<do other> Any thoughts would be welcomed. BW,
Matt _______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners