[Haskell-beginners] Writing a polymorphic function in Haskell

Matt Williams matt.williams45.mw at gmail.com
Fri Sep 22 19:55:43 UTC 2017


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20170922/e57fae1d/attachment.html>


More information about the Beginners mailing list