[Haskell-beginners] Conditionals where more than one case is true

PATRICK BROWNE patrick.browne at dit.ie
Mon Apr 17 10:26:07 UTC 2017

I am having difficulty in evaluating conditionals where more than one case
is true.
I require a program to express the following conditions:
 1) x is faster than y if x is a buffolo and y is a pig.
 2) x is faster than y if x is a pig and y is a slug.
Both of these conditions are true (expressed in fact predicate).
I include my attempt using guards (I have also tried case/if-then-else)

I can apreciate that the program works when the first guard condition is
met (faster Bob Joe).
I am not sure why it fails on the second case (faster Bob Joe)

Can I program the requirement using conditionals?
Can I pattern match is some way?
Is there another way to encode the requirement.

data E = Bob | Joe | Steve | Buffalo | Pig | Slug  deriving Show

fact Buffalo Bob  = True
fact Pig Joe  = True
fact Slug Steve  = True

faster x y | fact Buffalo x && fact Pig y =  True
           | fact Pig x && fact Slug y =  True
           | otherwise = False
-- faster Bob Joe OK
-- faster Steve  Bob ***Exception: Faster.hs:(5,1)-(7,23): Non-exhaustive
patterns in function fact


This email originated from DIT. If you received this email in error, please 
delete it from your system. Please note that if you are not the named 
addressee, disclosing, copying, distributing or taking any action based on 
the contents of this email or attachments is prohibited. www.dit.ie

Is ó ITBÁC a tháinig an ríomhphost seo. Má fuair tú an ríomhphost seo trí 
earráid, scrios de do chóras é le do thoil. Tabhair ar aird, mura tú an 
seolaí ainmnithe, go bhfuil dianchosc ar aon nochtadh, aon chóipeáil, aon 
dáileadh nó ar aon ghníomh a dhéanfar bunaithe ar an ábhar atá sa 
ríomhphost nó sna hiatáin seo. www.dit.ie

Tá ITBÁC ag aistriú go Gráinseach Ghormáin – DIT is on the move to 
Grangegorman <http://www.dit.ie/grangegorman>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20170417/d68e1e57/attachment.html>

More information about the Beginners mailing list