<div dir="ltr">Hi Yotam,<div><br></div><div>One way to do this is to take an `Either Foo Bar` as an argument instead, then you can pattern match on its Left and Right. This is preferable if the function is only meant to work for a limited number of types. If you want it to be extensible to any number of types you can write a typeclass that contains `func` with the same type signature as you have now. There are also some extensions built in to GHC to do this automatically for you, but I don't recall exactly which ones to enable...</div><div><br></div><div>HTH,</div><div>Adam</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, 10 Oct 2017 at 18:58 Yotam Ohad <<a href="mailto:yotam2206@gmail.com">yotam2206@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="rtl"><div dir="ltr">Hello cafe,</div><div dir="ltr">I am trying to do the following:</div><div dir="ltr"><br></div><div dir="ltr"><font face="monospace">data Foo = Foo { a1 :: Int -> Int, a2 :: Int -> Char }</font></div><div dir="ltr"><font face="monospace">data Bar = Bar { a1 :: Int -> Int }</font></div><div dir="ltr"><font face="monospace"><br></font></div><div dir="ltr"><font face="monospace">funcĀ :: a -> Maybe (Int -> Int) -- a is either Foo or Bar</font></div><div dir="ltr"><font face="monospace">func (x::(Bar/Foo) = Just $ a1 x</font></div><div dir="ltr"><font face="monospace">func _ = Nothing</font></div><div dir="ltr"><font face="monospace"><br></font></div><div dir="ltr">I'm not sure how to implement this. All I know that the types are matching so I think it could be possible.</div><div dir="ltr"><br></div><div dir="ltr">Thanks for your help</div><div dir="ltr"><font face="monospace">-</font>Yotam</div></div>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div>