To put in my two pennyworth on the interchange between Aaron Sloman
and David LaGrone:
>> And you don't need an OOP language to give you support for
>> abstraction. It's a requirement for *any* well structured language
>> providing user-defined datatypes. (E.g. ML ?)
>THANKS, Aaron!
> I finally saw the light after my last message. <grin> You are right!
> And I understand why you are right. And I agree with you...now that I
> understand.
Actually, those of us who follow Landin in looking to found computation on
Church's lambda calculus would observe that Church got it right in the
beginning. What you need for well structured computation is:
(a) function application - to do your arithmetic etc.
(b) abstraction, and that is ***lambda-abstraction*** to ensapsulate some
piece of computation.
The elaborations of this basic framework present in actual programming
languages arise from various reasons, many of them BAD.
(A) An implementation of the lambda calculus requires that free variables
be treated properly. Most "real" programming languages don't handle free
variables properly, and have to invent unnecessary constructs (like modules,
packages) to cover the gap. I am as guilty as anybody - having got a tolerable
treatment of free variables in POP-2, we had to go and add sections to the
language, despite their not being logically necessary. (However efficiency
demands that free variables be implemented in a variety of ways depending
on their context).
(B) Some measure of syntactic sugar on top of the lambda calculus is
desirable, since it is a logicians language, and logicians are concerned with
what is in principle provable, rather than with actually proving things or
specifying algorithms. (Lispers are free to disagree, but I believe that man's
eye was not meant for counting brackets, no nor woman's neither). And we
really would none of us be happy expressing our recursions with the Y
combinator.
(C) Static typing does require a conceptual structure to be built on top
of the lambda calculus, and this impacts the treatment of abstraction.
Robin Popplestone.
|