Scala es un lenguaje diseñado para soportar completamente la programación funcional, ofreciendo características como funciones de orden superior, inmutabilidad, expresiones lambda y estructuras que facilitan trabajar de manera declarativa.


Principios de la Programación Funcional

  1. Inmutabilidad: Los datos no cambian después de su creación, lo que evita efectos secundarios.
  2. Funciones puras: Una función siempre devuelve el mismo resultado para los mismos argumentos, sin modificar el estado global.
  3. Funciones como ciudadanos de primera clase: Las funciones pueden asignarse a variables, pasarse como argumentos y devolverse como valores.
  4. Composición de funciones: Permite combinar funciones pequeñas para crear soluciones más complejas.
  5. Expresiones en lugar de instrucciones: En lugar de cambiar estados, se evalúan expresiones para producir nuevos valores.

Funciones en Scala

Declaración de Funciones

def sumar(a: Int, b: Int): Int = {
  a + b
}

println(sumar(3, 5)) // Salida: 8

Funciones Lambda (Funciones Anónimas)

Las funciones lambda son definiciones de funciones compactas.

val multiplicar = (a: Int, b: Int) => a * b
println(multiplicar(2, 3)) // Salida: 6

Funciones de Orden Superior

Una función de orden superior es una función que acepta otra función como argumento o devuelve una función.

Ejemplo: Aplicar una función a una lista

val numeros = List(1, 2, 3)
val cuadrados = numeros.map(x => x * x)
println(cuadrados) // Salida: List(1, 4, 9)

Ejemplo: Devuelve una función