miércoles, 13 de octubre de 2010

Reporte # 4 Lenguajes Funcionales

La programación funcional es un paradigma de programación declarativa basado en la utilización de funciones aritméticas.
Los programas escritos en un lenguaje funcional están constituidos únicamente por definiciones de funciones, entendiendo éstas no como subprogramas clásicos de un lenguaje imperativo, sino como funciones puramente matemáticas, en las que se verifican ciertas propiedades como la transparencia referencial (el significado de una expresión depende únicamente del significado de sus subexpresiones), y por tanto, la carencia total de efectos lateraes.

Los lenguajes funcionales ofrecen al programador un buen número de recursos expresivos que permiten resolver problemas complejos mediante programas pequeños y robustos. Entre ellos cabe destacar: un sistema de tipos polimórficos que permite definir una amplia variedad de estructuras de datos de uso genérico, la posibilidad de definir funciones que aceptan otras funciones como argumentos y devuelven funciones como resultado, facilidades para definir y manipular estructuras de datos infinitas, un modelo computacional simple, claro y bien fundamentado, etc.

A continuacion les presento un ejemplo en  Scheme, realmente es demasiado sencillo ya que intente realizar  otros con un tanto mas  de dificultad pero no tuve exito para concluirlos, espero y les sirva de ejemplo el siguiente programa:

DrScheme


Lo que realiza el programa es encontrar el area de un circulo con diferentes radios que ingresa el usuario.


#lang scheme
(define (area radio)
  (* pi radio radio))



Welcome to DrScheme, version 4.1.3 [3m].
Language: Module; memory limit: 128 megabytes.
> (area 2)
12.566370614359172
> (area 5)
78.53981633974483
> (area 12)
452.3893421169302
> (area 54)
9160.884177867836
>

Agregue la codificacion y el resultado que muestra el programa ya que tuve problemas con mi tecla impr pant(:

Aqui ya les dejo otro lenguaje diferente que me faltaba

HASKELL

El entorno HUGS funciona siguiendo el modelo de una calculadora en el que se establece una sesión interactiva entre el ordenador y el usuario. Una vez arrancado, el sistema muestra un prompt "?" y espera a que el usuario introduzca una expresión (denominada expresión inicial y presione la tecla <RETURN>. Cuando la entrada se ha completado, el sistema evalúa la expresión e imprime su valor antes de volver a mostrar el prompt para esperar a que se introduzca la siguiente expresión.


Funcion factorial
1)
fac 0 = 1
fac n = n * fac (n-1)
 
main = print (fac 42)
 $ ghc -o fac fac.hs
    $ ./fac
    1405006117752879898543142606244511569936384000000000

 
fac 0 = 1
fac n = n * fac (n-1)  

main = print (fac 12)
$ ghc -o fac fac.hs    
$ ./fac    
479001600

2)
? sum [1..10]
55
La notación [1..10]representa la lista de enteros que van de 1 hasta 10, y sum es una función estándar que devuelve la suma de una lista de enteros. El resultado obtenido por el sistema es:
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55

Saludos!