Como vamos¶
- Elementos de PF
- Variables inmutables
- Uso de recursión como método de solución
- Toda expresión es un valor (no hay elementos como Null, Return, Continue)
- Funciones son ciudadanos de primera clase (o de alto orden)
- Evaluación de expresion
- De izquierda a derecha
- CBV Evaluación por valor, los valores se calculan antes de ejecutar la función
- CBN Evaluación por nombre, los valores se calculan cuando se van a utilizar
- Alcance léxico
El alcance está dado por la ubicación del código, es decir que en una función podemos ocultar una variable externa (shadowing) y no poder a su valor directamente.
val x = 10 { val x = x+3 //este x toma el de afuera x //x interno } def f(x:Int) = x*2 f(30) //60 porque el x de la función oculta al externo - Recursión:
- Recursión lineal: Abre marcos de pila para cada llamado, es sencilla de programar dado que solo basta con programar caso base y caso recursivo
- Recursión de cola: Solo abre un marco de pila, pero requiere ajustar el acumulador
- Recursión de árbol: Multiples llamados