> > Haskell (http://www.haskell.org/onlinereport/decls.html). The use of "arity"
[..]
> BTW, what might the reason for that be, is it for the sake of ease of
> translation/implementation, or for the sake of some principle? I
> mean, as soon as a person realises that there are multiple syntaxes
> for declaring a function, he/she will unify them to one abstract
> function in the head (where the resulting type matters, not the
> syntax).
The two reasons that occur to me are:
(i) to catch more errors, specifically, to catch the error of
accidentally missing an argument. Consider:
f False False = 0
f False True = 1
f True = error "TF not allowed"
f True True = 3
Without the rule, this would be accepted; with the rule, it is
rejected - rightly so, I think.
(ii) to make the meaning of pattern-matching easier to define and more
regular. The current definition (sec 4.4.3.1 of the report - see the
Translation sidebar) makes essential use of the fact that the array of
patterns is rectangular. Without this, the precise order of matching
might be ambiguous, or at least harder to define.
http://www.haskell.org/onlinereport/decls.html#sect4.4.3.1
HTH.
--KW 8-)