3.14.2 PL/Programación funcional (4 horas Core-Tier1)
Temas:
Core Tier1
- El efecto de la programación libre:
- Llamadas a función que no tiene efecto secundarios, para facilitar el razonamiento composicional
- Variables inmutables, prevencion de cambios no esperados en los datos del programa por otro código.
- Datos que pueden ser subnombrados o copiados libremente sin introducir efectos no deseados del cambio
- Procesamiento de estructuras de datos (p.e. arboles) a través de fuciones con casos para cada variación de los datos.
- Constructores asociados al lenguaje tales como uniones discriminadas y reconocimiento de patrones sobre ellos.
- Funciones definidas sobre datos compuestos en términos de funciones aplicadas a las piezas constituidas.
- Funciones de primera clase (obtener, retornar y funciones de almacenamiento)
Core Tier2
- Cierres de función (funciones que usan variables en entornos léxicos cerrados)
- Significado y definicion básicos - creacion de cierres en tiempo de ejecución mediante la captura del entorno.
- Idiomas canónicos: llamadas de retorno, argumentos de iteradores, código reusable mediante argumentos de función
- Uso del cierre para encapsular datos en su entorno
- Evaluación y aplicación parcial
- Definición de las operaciones de orden superior en los agregados, especialmente en mapa, reducir / doblar, y el filtro.
Objetivos de Aprendizaje:
Core-Tier1:
- Escribir algoritmos básicos que eviten asignación a un estado mutable o considerar igualdad de referencia [Usar]
- Escribir funciones útiles que puedan tomar y retornar otras funciones [Usar]
- Comparar y contrastar (1) el enfoque procedurar/funcional- definiendo una función por cada operación con el cuerdo de la función proporcionando un caso por cada variación de dato - y (2) el enfoque orientado a objetos - definiendo una clase por cada variación de dato con la definición de la clase proporcionando un método por cada operación. Entender ambos enfoques como una definición de variaciones y operaciones de una matriz [Evaluar]
Core-Tier2:
- Razonar correctamente sobre variables y el ámbito léxico en un programa usando funciones de cierre (function closures) [Usar]
- Usar mecanismos de encapsulamiento funcional, tal como closures e interfaces modulares [Usar]
- Definir y usar iteradores y otras operaciones sobre agregaciones, incluyendo operaciones que tienen funciones como argumentos, en múltiples lenguajes de programación, seleccionar la forma mas natural por cada lenguaje [Usar]
Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM