Como vamos¶
Hemos visto como especificar datos recursivos
-
Especificación inductiva
\[ 2 \in S, n \in S \therefore n+2 \in S \] -
Especificación mediante gramáticas
<list-n> ::= '() | <int> <list-n> - Diseño de las funciones recursivas, deben seguir la especificación de los datos recursivos
- Caso base: Terminación
- Caso recursivo: Compone la solución y paulatinamente desglosa la entrada para llegar al caso base (terminación)
- Alcance y ligadura de variables
- let especificaciones en bloque
- let* especificaciones en secuencia
- letrec especificaciones recursivas: Funciones
- Aspectos de alcance
- Alcance estática: Cada variable vive en su ambito y fuera de el no es accesible
- Alcance dinámicoL Cada variable puede ser potencialmente global
- Shadowing / Ocultamiento: Cuando una variable en un contexto local oculta una variable global