Como vamos¶
- Representación de datos recursivos
- Inductiva: \(5 \in S,\; n \in S \therefore n+5 \in S\)
- Gramaticas
<lst-sym> ::= '() ::= <symbol> <lst-sym>
- TADs
- Tipo abstracto de datos
- Interfaz (uso del programador) e implementación (interna del lenguaje)
- Interfaz:
- Constructores: Inicializar un dato perteneciente al tipo
- Observadores
- Predicados: Para consultar a que tipo de dato pertenece
- Extractores: Extraen la información dentro de los tipos
- Diseño de TADs
- Implemente un constructor para cada variante en la gramática
- Implemente un predicado para cada variante en la gramática
- Implemente un extractor para cada parte de cada variante en la gramática.
- Alcance y ligadura
- Alcance en bloque: let (solo se toma lo anterior)
- Alcance secuencial: let* se toma el valor generado anteriormente
- Alcance recursivo: letrec* los valores se conocen entre sí y asi mismos (usar solo para procedimientos recursivos)
- Diseño TADs, volvemos independiente de la representación interna, nos da igual si son listas, procedimientos u otra estructura.
Temas¶
El día de hoy tenemos las temáticas de define-datatype para arboles de sintaxis abstracta