>>>>> "Hans" == Hans Aberg <[EMAIL PROTECTED]> writes:

    >> It's not different logical entities, all occurrences of f are variables.

    Hans>   Different occurrences of f have different semantic meaning (that is, the
    Hans> "f" in one place is not the same as the "f" in another place).

All I'm saying is in "f f = f", the first occurrence of f is a binding
occurrence, the second one is also a binding one, and the third one is 
an occurrence of f bound to the second binding.

    >> It's not Haskell that's causing the confusion if any, it's the lambda
    >> calculus, more precisely: alpha-conversion.

    Hans>   The original question was this: What is the meaning of "f(f) = f"? I
    Hans> remarked that in this case Haskell has a very good strategy, namely
    Hans> interpreting it as the expression f := f |-> f, or "f is assigned the
    Hans> expression  lambda f f" if you so want; the lack of such a good strategy
    Hans> seemed to cause the other problems discussed in this thread.

There is no assignment in "f f = f", it's just binding of names. Using 
any notion of assignment in this context is misleading IMHO.

    Hans>   Otherwise, the naming of functions is not part of the lambda calculus;

I disagree on that one: the meaning of 

        letrec f = \f -> f in e
is
        (\f -> e) (fix \f -> \f -> f)

[plug in any fixpoint combinator for fix]

-Peter


Reply via email to