Lambada-Calculus

<humour, logic>

(A pun on "lambda-calculus") Teaching logic thru spanish dance steps. Invented by P. van der Linden <[email protected]>.

Last updated: 1996-08-10

LAMBDA

A version of typed lambda-calculus, used to describe semantic domains.

["Outline of a Mathematical Theory of Computation", D.S. Scott, TM PRG-2, PRG, Oxford U, 1971].

lambda abstraction

A term in lambda-calculus denoting a function. A lambda abstraction begins with a lower-case lambda (represented as "\" in this document), followed by a variable name (the "bound variable"), a full stop and a lambda expression (the body). The body is taken to extend as far to the right as possible so, for example an expression,

 \ x . \ y . x+y

is read as

 \ x . (\ y . x+y).

A nested abstraction such as this is often abbreviated to:

 \ x y . x + y

The lambda expression (\ v . E) denotes a function which takes an argument and returns the term E with all free occurrences of v replaced by the actual argument. Application is represented by juxtaposition so

 (\ x . x) 42

represents the identity function applied to the constant 42.

A lambda abstraction in Lisp is written as the symbol lambda, a list of zero or more variable names and a list of zero or more terms, e.g.

 (lambda (x y) (plus x y))

Lambda expressions in Haskell are written as a backslash, "\", one or more patterns (e.g. variable names), "->" and an expression, e.g. \ x -> x.

Last updated: 1995-01-24

lambda-calculus

<mathematics>

(Normally written with a Greek letter lambda). A branch of mathematical logic developed by Alonzo Church in the late 1930s and early 1940s, dealing with the application of functions to their arguments. The pure lambda-calculus contains no constants - neither numbers nor mathematical functions such as plus - and is untyped. It consists only of lambda abstractions (functions), variables and applications of one function to another. All entities must therefore be represented as functions. For example, the natural number N can be represented as the function which applies its first argument to its second N times (Church integer N).

Church invented lambda-calculus in order to set up a foundational project restricting mathematics to quantities with "effective procedures". Unfortunately, the resulting system admits Russell's paradox in a particularly nasty way; Church couldn't see any way to get rid of it, and gave the project up.

Most functional programming languages are equivalent to lambda-calculus extended with constants and types. Lisp uses a variant of lambda notation for defining functions but only its purely functional subset is really equivalent to lambda-calculus.

See reduction.

Last updated: 1995-04-13

lambda expression

<mathematics>

A term in the lambda-calculus denoting an unnamed function (a "lambda abstraction"), a variable or a constant. The pure lambda-calculus has only functions and no constants.

Last updated: 1995-04-13

lambda lifting

A program transformation to remove free variables. An expression containing a free variable is replaced by a function applied to that variable. E.g.

 f x = g 3  where g y = y + x

x is a free variable of g so it is added as an extra argument:

 f x = g 3 x  where g y x = y + x

Functions like this with no free variables are known as supercombinators and are traditionally given upper-case names beginning with "$". This transformation tends to produce many supercombinators of the form f x = g x which can be eliminated by eta reduction and substitution. Changing the order of the parameters may also allow more optimisations. References to global (top-level) constants and functions are not transformed to function parameters though they are technically free variables.

A closely related technique is closure conversion. See also Full laziness.

LambdaMOO

<games>

The most frequently used server software for running a MOO and also the nerve-center (of sorts) of the MOO community.

ftp://ftp.lambda.moo.mud.org/pub/MOO/.

Telnet.

Last updated: 1999-05-25

Lambda Prolog

<language>

An extension of standard Prolog defined by Dale A. Miller and Gopalan Nadathur in 1986, in which terms are strongly typed lambda terms. Clauses are higher order hereditary Harrop formulas. The main novelties are universal quantification on goals and implication.

The Prolog/Mali compiler compiles Lambda Prolog for the MALI abstract memory system.

Teyjus is an implementation of Lambda Prolog.

Lambda Prolog home.

Mailing list: [email protected].

["Higher-order logic programming", Miller D.A. and Nadathur G., 3rd International Conference on Logic Programming, pp 448-462, London 1986].

[Nadathur G. "A Higher-Order Logic as a Basis for Logic Programming", Thesis, University of Pennsylvania, 1987].

Last updated: 2002-10-15

lamer

<jargon>

A hopelessly clueless luser.

Last updated: 1997-01-31

LAMINA

A concurrent object-oriented language.

["Experiments with a Knowledge-based System on a Multiprocessor", Third Intl Conf Supercomputing Proc, 1988].

["ELINT in LAMINA, Application of a Concurrent Object language", Delagi et al, KSL-88-3, Knowledge Sys Labs, Stanford U].

lamp-post error

fencepost error

Nearby terms:

LALRlalr.ssLambada-CalculusLAMBDAlambda abstractionlambda-calculus

Try this search on Wikipedia, Wiktionary, Google, OneLook.



Loading