> This ":=:" is, it seems me, the variation that the Haskell "=" corresponds
> to, except one then does not indicate the quantity defined, which is
> causing those ambiguity problems.

I always thought that in Haskell the left hand side is the one being
defined and the right hand side is the one that provides the value, from
an operational point of view; from a denotational point of view is just
an equality. This is a nice 'duality' that allows you to reason
equationally, while writing operationally.
The problem is indeed which entity in the left hand side is being
defined (and what of them are arguments).
It is clear that
  f x y z = e
is equivalent to
  f = \x.\y.\z.e
so the entity being defined is the function f, and x, y and z are the
arguments.
But adding non-trivial patterns (n+k patterns?) and infix operators
cause the ambiguety.
In
  (x + 1) = e
and
  x + 1 = e
it is clear that the right hand side provides the value. But it is not
clear whether x or (+) are being defined. 
Considering that
  (x # 1) = e
is a definition for (#), why
  (x + 1) = e
should be a definition for x?
As Koen, I were in favour of n+k patterns, but I get Simon's point, and
I think I change my mind...

Fidel.


Reply via email to