Clase 16

18
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 y Desventajas de los lenguajes funcionales. • Caso de Estudio: Scheme.

description

lenguajes funcionales

Transcript of Clase 16

Agenda Clase 16Motivacin e Historia de la Programacin Funcional y la Programacin Lgica.Concepto y Caractersticas de la Programacin Funcional.enta!as y "esventa!as de los lengua!es #uncionales.Caso de $studio% &c'eme.Programacin lgica y #uncional% MotivacinLos lengua!es lgicos son utili(ados por lo general para especi#icaciones #ormales y prue)as de teoremas. Pe!% dise*o de circuitos digitales+ estudio #ormal de la sem,ntica de los lengua!es.Por su parte los lengua!es #uncionales se 'an vuelto populares para aplicaciones cient#icas y de negocio.Programacin lgica y #uncional% Antecedentes Histricos.-./s Alan 0uring+ Alon(o C'urc'+ &tep'en 1leene y $mil Post desarrollan por separado #ormali(aciones de la nocin de algoritmo.0uring M,2uina de 0uringC'urc' e2uivalencia entre lengua!es+ Lam)da C,lculo.1leene y Post de#iniciones a)stractas sin vinculacin directa a la implementacin de un lengua!e de programacin.Programacin Funcional% Concepto.La programacin #uncional de#ine las salidas de un programa como una #uncin matem,tica de sus entradas+ sin nocin de estado interno+ y+ por tanto sin e#ectos de )orde.Lisp lengua!e #uncional original y el m,s utili(ado.Algunos lengua!es #uncionales% &c'eme+ Common Lisp+ Ml+ Miranda+ Has3ell+ &isal.Programacin Funcional% Caractersticas pr,cticasalores de Funciones de Primer 4rden y Funciones de 4rden &uperior.Polimor#ismo.0ipo Lista y sus 4peradores.5ecursin.5etorno de datos estructurados.Constructores de o)!etos estructurados.5ecoleccin de 6asura.enta!as y "esventa!as de los lengua!es #uncionales.enta!as%7M,s #,ciles de escri)ir+ depurar y mantener 2ue los lengua!es imperativos gracias a la ausencia de e#ectos de )orde."esventa!as%7&e 2uedan cortos en porta)ilidad+ ri2ue(a de li)reras+ inter#aces con otros lengua!es y 'erramientas de depuracin.Caso de $studio% &c'eme&e anali(a ya 2ue procede de Lisp 2ue es el lengua!e #uncional m,s utili(ado.Caractersticas adicionales de Lisp aplica)les a &c'eme%7Homogeneidad de programas y datos.7Autode#inicin.78nteraccin con el usuario a trav9s de un ciclo :leer;evaluar;imprimirstringC B@>sym)olC B@>mem)erC B@>pairC B@>listC B@DtD#&c'eme% Funciones de#inidas por el usuario.Las #unciones se de#inen a trav9s de la pala)ra reservada :lam)dalam)da >B@ >E B B@@Lista de par,metros #ormales de la #uncinCuerpo de la #uncin $Bpresiones condicionales pueden ser escritasutili(ando un :i#i# >F G -@ H I @ H&c'eme% Asociacin >Binding@Para asociar un nom)re a una #uncin se utili(an las eBpresiones :let< >localmente@ o :de#ine< >glo)almente@. (let ((a 3) (b 4) (square (lambda (x) (*xx))) (plus +))(sqrt (plus (square a) (square b) ))) Lista de pares nom)re valorAplicacin de #unciones de#inidas.&e utili(a la #uncin letrec para #unciones recursivas.(letrec ((fact (lambda (n) (if (= n 1) 1 (* n (fact (- n 1))))))) (fact 5))&c'eme% Listas y =AmerosLos principales operadores de#inidos para la manipulacin de listas son los siguientes%car retorna la ca)e(a de la lista.cdr retorna el resto de la lista.cons agrega un elemento a la ca)ecera de la lista.null? determina si u argumento es la lista vaca.0ipos =um9ricos% integer+ rational+ real+ compleB+ num)er.&c'eme% 6As2ueda y Prue)as de 8gualdad.8JKAL"A" L8&0A L8&0A "$ A&4C8AC8L=e2C mem2 ass2e2vC memv assve2ualC mem)er assoc&c'eme% Flu!o de Control y Asignaciones.Kna secuencia de intrucciones al estilo :i#;else< puede implementarse con la #uncin :cond