• Barajar
    Activar
    Desactivar
  • Alphabetizar
    Activar
    Desactivar
  • Frente Primero
    Activar
    Desactivar
  • Ambos lados
    Activar
    Desactivar
  • Leer
    Activar
    Desactivar
Leyendo...
Frente

Cómo estudiar sus tarjetas

Teclas de Derecha/Izquierda: Navegar entre tarjetas.tecla derechatecla izquierda

Teclas Arriba/Abajo: Colvea la carta entre frente y dorso.tecla abajotecla arriba

Tecla H: Muestra pista (3er lado).tecla h

Tecla N: Lea el texto en voz.tecla n

image

Boton play

image

Boton play

image

Progreso

1/13

Click para voltear

13 Cartas en este set

  • Frente
  • Atrás
Programacion Funcional
Una función matemática, la cual describe una relación entre una entrada y una salida y donde el concepto de estado o variable se elimina completamente.
Utilidad
Conseguir lenguajes expresivos y matemáticamente elegantes, en los que no sea necesario bajar al nivel de la máquina para describir el proceso llevado a cabo por el programa.
Funciones de Orden Superior
Son funciones que pueden tomar otras funciones como argumentos o devolverlos como resultados. En cálculo , un ejemplo de una función de orden superior es el operador diferencial d / dx , que devuelve la derivada de una función f .
Funciones Puras
No tienen efectos secundarios (memoria o E/S). Esto significa que las funciones puras tienen varias propiedades útiles, muchas de las cuales pueden ser utilizadas para optimizar el código
Recursividad
Las funciones recursivas se invocan a sí mismas, permitiendo que una operación se realice una y otra vez hasta alcanzar el caso base.
Evaluación estricta frente a la no estricta
Los lenguajes funcionales pueden ser clasificados por el hecho de usar evaluación estricta(eager) o no estricta(lazy), conceptos que hacen referencia a cómo los argumentos de las funciones son procesados cuando una expresión está siendo evaluada. La diferencia técnica está en la notación semántica de las expresiones que contienen cálculos fallidos o divergentes. Bajo la evaluación estricta, la evaluación de cualquier término que contenga un sub-término fallido hará que este sea de por sí fallido.

Por ejemplo, la expresión:

print length([2+1, 3*2, 1/0, 5-4])
Tipos de Sistemas
El uso de tipos de datos algebraicos y la coincidencia de patrones hace que la manipulación de estructuras de datos complejas convenientes y expresivos, la presencia de comprobaciones estrictas de tipos en tiempo de compilación hace que los programas sean más fiables, mientras que la inferencia de tipos libera al programador de la necesidad de declarar manualmente los tipos para el compilador.
La programación funcional en lenguajes no funcionales
Es posible utilizar un estilo de programación funcional en lenguajes que tradicionalmente no se consideran lenguajes funcionales. Por ejemplo, tanto D y Fortran95 se apoyan explícitamente en funciones puras. Funciones de primera clase.
En Java, las clases anónimas a veces pueden ser utilizados para simular clausuras.
Ventajas
Ausencia de efectos colaterales
Proceso de depuración menos problemático
Pruebas de unidades más confiables
Mayor facilidad para la ejecución concurrente
Desventajas
Cuando hablamos de programacion funcional hablamos de matematicas llevadas a la programacion. Pero no matematicas de las de sumar y restar si no de las que asustan. Terminos como monada, funtor, monoide, tipos de datos algebraicos… pueden asustar a mas de uno
Una de las principales herramientas de la programacion funcional es la recursion y seamos sinceros, no a todo el mundo le gusta la recursion
Cambiar la forma de trabajar puede costar y si estas habituado a trabajar con clases, objetos y programacion orientada a objetos puede ser un camino dificil
Leguajes de Programacion Funcional
Scheme, Erlang, Rust, Objective Caml , Scala, F# y Haskell, javascript
Actualidad
Este paradigma de programación, que parecía haber sido olvidado por la gran masa de desarrolladores, lleva unos cuantos años resurgiendo.
Ejemplos
function addLike(likes) {
return ++likes;
}
addLike(addLike(0)); /