2 Mar
2009
2 Mar
'09
6:10 a.m.
Tom Poliquin wrote:
Heinrich Apfelmus wrote:
You probably want guards, like this
fib n | n == 0 = 0 | n == 1 = 1 | otherwise = fib (n-1) + fib (n-2)
Is this what you had in mind?
module Main where
foo a b c | p1 && p2 || not p3 = 42 | p1 || not p2 && p3 = 13 | otherwise = 0 where -- setup if predicates p1 = a > b p2 = a + b > 2 p3 = a - b < 1
main = do x <- return $ foo 9 2 3 print x
-- 42
Yes. Of course, it will become clunky very quickly; only abstraction and insights into the problem domain can help in these cases. Regards, apfelmus -- http://apfelmus.nfshost.com