[Haskell-cafe] Language semantics
jcast at ou.edu
Wed Jun 27 17:03:20 EDT 2007
On Wednesday 27 June 2007, Andrew Coppin wrote:
> I have a tricky little question...
> Suppose I write a function like this:
> foo pattern1
> | gard1 = ...
> | gard2 = ...
> foo pattern2
> | gard3 = ...
> | gard4 = ...
> According to one tutorial I read, if pattern1 matches, pattern2 will
> never be tried, even if both guard1 and guard2 fail.
> And according to another tutorial I read, if pattern1 matches but all
> guards fail, pattern2 *will* be tried.
> Can somebody comfirm which one is actually correct?
You could just try it, you know . . .
Anyway, the second tutorial is correct: if all guards on pattern1 fail,
pattern2 will be tried next. See Section 3.17.3 in the Haskell Report .
Btw., which was the first tutorial?
More information about the Haskell-Cafe