Programaci³n funcional

download Programaci³n funcional

of 8

  • date post

    05-Dec-2014
  • Category

    Software

  • view

    141
  • download

    4

Embed Size (px)

description

 

Transcript of Programaci³n funcional

  • 1. Programacin Funcional Paradigmas y Lenguajes de Programacin. Rotta, Damin 2013
  • 2. Caractersticas Un programa se considera como una funcin matemtica. f:X Y y = f(x) Programa : Input -> Output output = Programa(input) No existen variables, slo existen constantes, parmetros y valores. La asignacin no es una instruccin permitida. No existen los ciclos al estilo de los lenguajes tradicionales. Un lenguaje funcional puede lograr esto mediante la recursin.
  • 3. Diferencias con las matemticas Las variables siempre se refieren a un valor y no a una localizacin de memoria. Ej: x=x+1 Esa es la razn por la cual decamos que el concepto de variable se elimina y la asignacin no es una instruccin permitida.
  • 4. Consecuencias de la ausencia de variables El valor de cualquier funcin depende solamente de los valores de sus parmetros y no de llamados previos. El valor de cualquier funcin no depende del orden de evaluacin de sus parmetros: transparencia referencial. El ambiente de ejecucin asocia valores con nombres, no con localizaciones de memoria; una vez que un nombre entra al ambiente, su valor no cambia.
  • 5. Lenguajes
  • 6. OCaml Desarrollado desde 1992 con base en sus predecesor Caml Special Light y Caml Light. De la familia ML creada por Robert Milner en 1975. Fuertemente tipado. Adems de tipos bsicos permite construir tuplas, arreglos, listas, registros, conjuntos y streams. No existen errores de punteros, de mal manejo de memoria, de asignaciones invalidas, de vectores fuera de rango, etc. Posee un recolector de basura que permite en muchos casos desentenderse del manejo de memoria dinmica.
  • 7. Comparacin (Factorial de un nmero) C: #include int main() { int c, n, fact = 1; scanf("%d", &n); for (c = 1; c 0, N1 is N - 1, factorial(N1, F1), F is N * F1.
  • 8. Ocaml: # let rec fact x = if x 1;i--){ suma=suma*i; System.out.println("El factorial de "+n+" es "+suma); } }