Programación No-Imperativa Modelos: Lenguajes Funcionales y Lógicos.

Slides:



Advertisements
Presentaciones similares
Condicional if y switch
Advertisements

La aritmetización de la sintaxis
Análisis Sintáctico Capítulo 4.
INTELIGENCIA ARTIFICIAL
equivalencia material; y b) equivalencia lógica
EL CÁLCULO LAMBDA λ.
INSTITUTO TECNOLOGICO DE MINATITLAN
Interpretando objetos
Unidad 4. Estructuras de selección
1 Tipos inductivos y Pattern Matching Introducción a tipos inductivos y pattern matching Abstracciones con pattern matching. Traducción a cálculo lambda.
Compilación de Lenguajes Funcionales Perezosos
Combinadores SK.
INTRODUCCION AL LENGUAJE C
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Programación 1 Introducción
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Ingeniero Anyelo Quintero
Funciones en lenguaje C
FUNCIONES Y PROCEDIMIENTOS
TRAMPAS EN EL DISEÑO DE LENGUAJES CON RELACIÓN A LOS NOMBRES - REGLAS DE ALCANCE - COMPILACIÓN POR SEPARADO CONTROL DE FLUJO - EVALUACIÓN DE EXPRESIONES.
Al término de la clase, el alumno reconoce las ventajas de usar JAVASCRIPT para un proyecto web.
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
Un lenguaje funcional avanzado:
Semana 5 Subprogramas..
ManTa Fundamentación Rodrigo Cardoso Universidad de los Andes Depto. de Ing. de Sistemas y Computación.
Unidad III Elementos del lenguaje C++
FUNCIONES LOGICAS SI(PL;V_V;V_F)
Análisis y Diseño de Algoritmos. Propiedades : f ( n )  O ( f ( n ) ) a ) O ( f ( n ) )  O ( g ( n ) )  f ( n )  g ( n )
Sintaxis.
Estructura de Datos y Algoritmos
Tablas de verdad en PHP Programación en Internet II.
Extensiones sintácticas Revisaremos formas especiales que son sintácticamente equivalentes a patrones que son expresables en términos de formas básicas.
ESTRUCTURA DE DATOS ESD-243
Agenda Clase 16 Motivación e Historia de la Programación Funcional y la Programación Lógica. Concepto y Características de la Programación Funcional. Ventajas.
El Lenguaje C++. Creación de programas simples de C++ Builder como ejercicios en C++. Los elementos de control fundamentales en C++, incluyendo operadores.
Semantica.
PENSAMIENTO ANALÍTICO SISTÉMICO DAISY KATERINE RODRÍGUEZ DURÁN
Tema 1. Introducción y Conceptos Básicos
MATEMATICAS COMPETENCIAS MATEMATICAS
TPPSFAsistentes para programadores Asistentes de Pruebas para Programadores Cálculo de Construcciones.
1 Samba: Un lenguaje funcional perezoso Presentación del lenguaje: qué es un programa Samba definiciones locales abstracciones lambda Tipos inductivos:
Agenda Clase 6 Iteradores. Enumeración sin iteradores. Loops lógicos. Recursión vs. Iteración. Recursión de Cola. Orden de Evaluación Normal y Aplicativo.
Términos algoritmo diseñar algoritmo implementar algoritmo
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Funciones Si Funciones Y
Optimización automática de programas (OAP) Germán Vidal 1 Optimización automática de programas Tema 2: Funciones, tipos y expresiones 2.1. Funciones 2.2.

ALGEBRA.
Metodología de la programación
Práctica Profesional PHP.
Estructuras de Decisión
Sentencia Condicional
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Optimización automática de programas (OAP) Germán Vidal 1 Optimización automática de programas Tema 3: Funciones, tipos y expresiones 3.1. Intérpretes,
Unidad 6: Lógica Filosofía I. 1 Unidad 6 Lógica 6.1 Noción, objeto y clases de lógica Nociones y clases Inferencia Formal Clases TradicionalFormal Enunciados.
Lenguaje de Programación LISP
INTRODUCCION AL LENGUAJE C
PARADIGMA Es un marco de referencia que impone reglas sobre cómo se deben hacer las cosas. CONCEPTO DE PARADIGMA DE PROGRAMACION colección de modelos conceptuales.
REGLAS PARA ELABORAR SEUDOCODIGOS Y DIAGRAMA DE FLUJO
Cobol C Pascal Fortran 2. OBJETOS DE DATOS SmallTalk Java C++
U2 Tipos de datos, referenciación y errores 1. Datos problema simple enteroreal carácter booleano Ingeniero = Oreja+catalejo modelo ordenador solución.
Estructura de Datos PILA Universidad Hispanoamericana Prof. Ing. Erick López.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Tema 8: Programación estructurada Introducción La importancia del conocimiento de programación es mucho mayor de lo que se piensa. Aprender a programar.
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
Operadores relacionales y lógicos.. Operadores relacionales  Son símbolos que se usan para comparar dos valores.  Dependiendo de la expresión comparada,
Departamento de Informática Universidad Técnica Federico Santa María Lenguajes Funcionales Francisco Bórquez Departamento de Informática Universidad Técnica.
ESPECIFICACIÓN FORMAL DE SISTEMAS. LAMBDA EXPRESIONES El lambda cálculo ( C) es un lenguaje simple que permite la descripción de las funciones matemáticas.
Transcripción de la presentación:

Programación No-Imperativa Modelos: Lenguajes Funcionales y Lógicos.

Agenda ג- Calculo Definición Beta – Reducciones alpha – conversión Orden de evaluación Funciones de alto nivel Definición Versión Currificada y no Currificada de funciones

ג -Calculo Definición: una notación / modelo computacional basada puramente en la manipulación de símbolos sintácticos, en la cual todo es una función. Una ג-expresión puede ser: Variable (ג variable. Expresión) Expresión0 Expresión1

ג -Calculo ffunción f (גx.x)función identidad (גx.x) z = zdevuelve z (aplicación de la función identidad al argumento “z”) Problema de asociación: El orden de aplicación es a la izquierda A – B – C (A – B) - C A – (B – C) X Y Z X (Y Z) (X Y) Z

ג -Calculo Otros ejemplos básico son: (גx. ___ ) una función que toma un argumento y retorna algo (גx. X + 2 ) a= a + 2se le aplica la función a el argumento “a” (גx. 7 ) a= 7una función constante devuelve la constante Ya que agarramos un poco la noción vamos con otro ejemplo un poco más complejo. (ג x.גy.y)(גx.xzxx)(גz.w) (גy.y) (גz.w)

ג -Calculo If “B” then “T” else “E” Si B = True devuelve “T” Si B = False devuelve “E” Primera = True = (גx.גy.x) Segunda = False = (גx.גy.y) If = (ג a.ג b.גc.abc) Condición Boleana else then Veamos juntos el formalismo del condicional como podría probarse con ג-calculo, para ello definimos algunas cosas previamente que hay que tener en cuenta:

ג -Calculo Si B = False devuelve “E” Si B = True devuelve “T” If “B” then “T” else “E” (גa. גb. גc.abc) True T E (גb. גc.True b c) (גc.True T c) True T E Primero T E (גx. גy.x) T E (גy.T) E = T (גa. גb. גc.abc) False T E (גb. גc.False b c) (גc.False T c) False T E Segundo T E (גx. גy.y) T E (גy.y) E = E

ג -Calculo Reglas de reducción: Beta-reducción Alpha-reducción Beta-reducción(גx.E) F E [X := F] (גx.ax)b ab (גa.ba)“b” esta libre “a” esta ligada Alpha-reducción(גx.E) F (גy.E [ X := Y]) β α

ג -Calculo Orden de evaluación Aplicativo: se escoge el “ β -redex” más interno y más a la izquierda. Normal: se escoge el “ β -redex” más externo y más a la izquierda. (גx.xxa)((גy.bycy)(גz.z)) ((גy.bycy)(גz.z)) ((גy.bycy)(גz.z)) a (b(גz.z)c(גz.z)) (b(גz.z)c(גz.z)) a (גx.xxa)(b(גz.z)c(גz.z)) Aplicativo Normal β 2 β-reducciones

ג -Calculo Teorema –La forma normal, si existe es una. –Si la forma normal existe, el orden de evaluación normal siempre llega a ella. Ejemplo de un ciclo infinito (גx.xx)(גx.xx) No importa si es aplicativo o normal la reduzca y llega a ella misma.

Funciones de alto nivel Se dice que una función es de alto nivel (también conocida como forma funcional) cuando toma una función como argumento o retorna una función como resultado. Definición: Los programadores de scheme, ML, Haskell o cualquier otro lenguaje funcional puede fácilmente definir funciones de alto nivel. (define fold (lambda (f l i) (if (null? l) i (f (car l) (fold f (cdr l) i))))) Ej. Implementación del fold de Haskell en scheme

Funciones de alto nivel 1.- Versión No Currificada (define sumaNC (lambda (x y) (+ x y) ) ) 2.- Versión Currificada (define sumaC (lambda (x) (lambda (y) (+ x y) ) ) ) Como se observa en el ejemplo suministrado en Scheme a la versión no currificada se le pasan ambos parámetros al mismo tiempo, en cambio a la versión currificada se le van pasando uno por uno.