Programación Funcional y Herencia de Clases: Tipos de Datos Algebraicos Extensibles en Scala
Autor:
Agustín Jesús Ríos
Fecha Defensa:
30/04/2014
Resumen:
Cuando se desarrolla un software muchas veces se tiene que lidiar con tipos de datos recursivamente definidos y operaciones sobre ellos, por ejemplo en un árbol de sintaxis abstracta o en la manipulación simbólica de expresiones. Éstos son comunes tanto en la programación orientada a objetos como en la programación funcional. En el primer paradigma se representan como una jerarquía de clases relacionadas con una clase base común, siguiendo el patrón de diseño Composite, en el segundo como tipos de datos algebraicos.
El desafío en estas estructuras, que se encuadra dentro del Expression Problem, es como extender el tipo de datos y las operaciones sobre él sin modificar el código existente, resolviendo los tipos estáticamente y reutilizando las operaciones previamente defininas.
El lenguaje de programación Scala unifica los tipos de datos algebraicos con las jerarquías de clases, haciendo posible la utilización de la herencia en un entorno funcional.
En este trabajo se investiga el impacto que tiene la unificación de conceptos de la programación funcional y la programación orientada a objetos, en particular, la utilización de la herencia y los tipos algebraicos de datos para resolver el Expression Problem.