Abstraction (or, Lambda Calculus for Dummies)

David E. Manifold tril@bespin.ml.org
Thu, 11 Dec 1997 12:37:38 +0000 (GMT)


What are the semantics of the abstraction function?

I'm sure this is something very simple, that I already understand.  It has
just not been explained in terms I am familiar with.  I don't know what a
lambda calculus is, and I tried looking at the "standard reference" but it
didn't make much sense because I'm not familiar with set theory or
notation.

Abstraction has something to do with making new functions.  In LISP, it
looks like lambda is used every time a new function is made.  Is
abstraction simply the creation of a new function using other functions
that are already known?  (I don't know LISP, either, but I know basically
what it is like)

In the HLL Semantics page, you give an example of the syntax of
abstraction:  lambda (x).sin(2*x+1)

If this is making a new function, shouldn't we give it a name?  Something
like "lambda f(x).sin(2*x+1)"  Or is this just evaluating an expression
that has 'x' in it?  Is the abstraction function taking x out of the
expression 2*x+1 or putting it in?

Is abstraction just the general term for creating new functions, or is it
only one way new functions are defined?  Can you abstract something
without creating a new function?

Abstraction is removing an object from its context and placing it in a new
one.  Does the former context include the object's semantics, causing the
object to lose them when abstracted, and obtain new semantics?  Or does
the new context refer to the old semantics as a sub-expression of itself?

This is probably extremely simple, I am just missing something.

David E. Manifold
tril@bespin.ml.org