Professional Documents
Culture Documents
FACULTAD DE CIENCIAS
ESCUELA ACADÉMICO-PROFESIONAL
INGENIERÍA DE SISTEMAS E INFORMÁTICA
TEMA:
EL CÁLCULO LAMBA
TEORIA DE LENGUAJE
PRESENTADO POR:
1. APONTE CLINTON
2. CHAVEZ ALVARASO SHUBERT
3. RAMIREZ NORABUENA JHON
4. HUAMAN LEANDRO NEDER
5. LOPEZ WILDER
6. OBREGÓN RICHARD FIGUEROA
7. RODRIGUEZ OSORIO ROSALIA FABIOLA
ASESOR:
Ing. Silva Zapata Miguel Ángel
HUARAZ - PERU
PRESENTACIÓN
Ante todo tenga nuestro cordial saludo en esta oportunidad tenemos el agrado de
presentarle nuestro trabajo que será entendible sobre “El Cálculo Lamba”.
2
ÍNDICE
PRESENTACIÓN ................................................................................................................... 2
ÍNDICE .................................................................................................................................... 3
EL CÁLCULO LAMBA .......................................................................................................... 4
1. HISTORIA.................................................................................................................... 4
2. EL CÁLCULO LAMBA ............................................................................................... 4
3. CÁLCULO LAMBDA Y LOS LENGUAJES DE PROGRAMACIÓN ......................... 5
3.1 EJEMPLOS :........................................................................................................ 5
4. CARACTERÍSTICAS .................................................................................................. 7
5. SINTAXIS DEL CALCULO LAMBDA ........................................................................ 7
6. VARIABLES LIBRES Y LIGADAS............................................................................. 8
7. REGLAS DEL CÁLCULO LAMBA ............................................................................ 9
1) α-CONVERSIÓN ................................................................................................... 10
2) β-REDUCCIÓN ...................................................................................................... 10
3) ƞ-CONVERSIÓN ................................................................................................... 11
8. APLICACIÓN PRÁCTICA ........................................................................................ 12
CONCLUSIÓN...................................................................................................................... 14
BIBLIOGRAFÍA .................................................................................................................... 15
3
EL CÁLCULO LAMBA
1. HISTORIA
Fue introducido en los 30's por Alonzo Church y Stephen Kleene con el
objetivo de dar una teoría general de las funciones es un sistema formal
diseñado para definir funciones, la forma de utilizarlas y la recursión. El
cálculo lambda influye en lenguajes funcionales como Lisp, Haskell y ML.
Es utilizado como un fundamento de lenguajes deprogramación porque
aporta una sintaxis básica de programación, la semántica para el concepto
e función en la transformación de argumentos en resultados y una forma de
definir primitivas de programación.Originalmente, Church había tratado de
construir un sistema formal completo para modelizar la matemática;pero en
1934 Kleene and Rosser publicaron una implementación de la paradoja de
Richard.Desde ese punto, el cálculo lambda fue usado para estudiar la
computabilidad, culminando en la respuesta negativa al problema de la
parada. En 1940, Church introdujo el Cálculo Lambda simplemente tipado
que es computacionalmente menos poderoso, pero lógicamente consistente
2. EL CÁLCULO LAMBA
El cálculo lambda es un sistema formal diseñado para investigar la
definición de función, la noción de aplicación de funciones y la recursión.
Se puede considerar al cálculo lambda como el languaje universal de
programación más pequeño. Consiste en una regla de transformación
simple (sustitución de variables) y un esquema simple para definir
funciones.
El cálculo lambda es universal porque cualquier función computable puede
ser expresada y evaluada a través de él. Por lo tanto, es equivalente a las
máquinas de Turing. Sin embargo, el cálculo lambda no hace énfasis en el
uso de reglas de transformación y no considera las máquinas reales que
pueden implementarlo. Se trata de una propuesta más cercana al software
que al hardware.
4
3. CÁLCULO LAMBDA Y LOS LENGUAJES DE PROGRAMACIÓN
Como lo menciona Peter Landin en su libro clásico Correspondencia entre
ALGOL 60 y el cálculo lambda de Church, la mayoría de los lenguajes de
programación tienen sus raíces en el cálculo lambda, lo que provee los
mecanismos básicos para las abstracciones de procedimiento y
abstracciones de aplicaciones (subprogramas).
Los lenguajes funcionales no son los únicos que soportan las funciones
como objetos de primera clase. Muchos lenguajes de programación
imperativa, como Pascal, hace tiempo que permiten pasar subprogramas
como argumentos a otros subprogramas. En C y su derivado C++ el
resultado equivalente se obtiene pasando punteros al código de las
funciones (subprogramas). Estos mecanismos están limitados a
subprogramas escritos explícitamente en el código, y no soportan
directamente funciones de alto nivel. Algunos lenguajes imperativos
orientados a objetos, tiene notaciones que representan funciones de
cualquier orden; tales mecanismos están disponibles en C++, Smalltalk y
más recientemente en ("agentes" de ) Eiffel y ("delegados" de) C#.
3.1 EJEMPLOS :
Como ejemplo, la expresión de "agente en línea" de Eiffel :
5
denota un objeto correspondiente a la expresión lambda λ x. x*x (con
llamada por valor). Puede ser tratada como cualquier otra expresión, por
ejemplo, asignarla a una variable o pasada a una rutina. Si el valor de
square es el de la expresión de agente anterior, entonces el resultado de
aplicar square a un valor (una reducción β) es expresada como
square.item ([a]), donde el argumento es pasado como una tupla.
func = lambda x: x * x
Lo anterior crea una función anónima llamada func que puede ser pasada
como parámetros a otras funciones, ser almacenada en variables, etc.
Python también puede tratar cualquier otra función creada con la
sentencia estándar def como un first-class object.
[ :x | x * x ]
6
// Declare a delegate signature
delegate double MathDelegate (double i);
4. CARACTERÍSTICAS
El cálculo lambda ha sido empleado como fundamento conceptual de los
lenguajes de programación, aportando:
(xy)
(((xz)y)x)
(λx.x)
(( λx.x)y)
(λz.(λx.y))
((x(λz.z))z)
Las primeras dos reglas generan funciones, mientras que la última describe
la aplicación de una función a un argumento. Una abstracción lambda λx.t
representa una función anónima que toma un único argumento, y se dice
que el signo λ liga la variable x en el término t. En cambio, una aplicación
lambda ts representa la aplicación de un argumento s a una función t. Por
ejemplo, λx.x representa la Función Identidad x → x, y(λx.x)y representa la
función identidad aplicada a y<tt>. Luego, <tt>λx.y representa la función
constante x → y, que devuelve y sin importar qué argumento se le dé.
8
1. Ocurrencias de ligadura (binders)
2. Ocurrencias ligadas (bound occurrences)
3. Ocurrencias libres (free occurrences)
Las variables de ligadura son aquellas que están entre el Λ y el punto. Por
ejemplo, siendo E una expresión lambda:
9
1) α-CONVERSIÓN
La regla de alfa-conversión fue pensada para expresar la idea siguiente:
los nombres de las variables ligadas no son importantes.
Por ejemplo λx.x y λy.y son la misma función. Sin embargo, esta regla
no es tan simple como parece a primera vista. Hay algunas
restricciones que hay que cumplir antes de cambiar el nombre de una
variable por otra. Por ejemplo, si reemplazamos x por y en
λx.λy.x,obtenemos λy.λy.y, que claramente, no es la misma función.
Este fenómemo se conoce como captura de variables
E[V := W]
es equivalente a
2) β-REDUCCIÓN
La regla de beta reducción expresa la idea de la aplicación funcional.
Enuncia que
10
((λV. E)E′ ) == E[V :=E′ ]
3) ƞ-CONVERSIÓN
Es la tercer regla, eta conversión, que podría ser añadida a las dos
anteriores para formar una nueva relación de equivalencia. La eta
conversión expresa la idea de extensionalidad, que en este contexto
implica que dos funciones son la misma si y solo si dan el mismo
resultado para cualquier argumento. La eta conversión convierte entre
λx.fx y f siempre que x no aparezca sola en f.Esto puede ser entendido
como equivalente a la extensionalidad así:
11
8. APLICACIÓN PRÁCTICA
A) Características:
Escrito en html5
Diseño adaptable
Utiliza java script
Se hace uso de la librería “lambda-min.js” escrita por el profesor Carl
Burch disponible en:http://www.cburch.com/
B) Funcionamiento:
(λy.4 × y) ((λz.z² + 2 × z) 5)
12
Como se observa el desarrollo se da paso por paso simplificando las
expresiones y reemplazando por los valores esperados Los operadores
soportados son:
+, -, *, /
If
13
CONCLUSIÓN
El cálculo lambda es un sistema formal diseñado para investigar la definición de
función, la noción de aplicación de funciones , la recursión y computacionalmente
equivalente en poder a muchos otros modelos plausibles para el cómputo
(máquinas de Turing incluidas); es decir, cualquier cálculo que se pueda lograr en
cualesquiera de estos otros modelos se puede expresar en el cálculo lambda y
viceversa. Según la tesis de Church-Turing, ambos modelos pueden expresar
cualquier cómputo posible.
14
BIBLIOGRAFÍA
15