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!

12 comentarios:

  1. La explicacion de lenguajes funcionales, esta muy entendible, ademas de describe para que nos pueden servir estos lenguajes.

    Del programa de scheme como dices es un poco sencilo, en definir are, radio y la operacion,
    muy buen reporte

    ResponderEliminar
  2. estaba leyendo tu reporte y me parece que es muy bueno me gusta el que allas sido muy corta en tu reporte ya qe aun asi lo supise esplicar muy biie y elejemplo que eincliyes de area radio se ve sencillo :)

    ResponderEliminar
  3. Hola Sofiiia!!
    Oies pues tu reporte sobre Scheme de lenguajes funcionales, es muy bueno, si hablas bien de las caracteristicas, de el, como mencionas que tuviste algunos inconvenientes en realizar otros ejemplos, pues t recomiendo que cheques las paginas que publique en mi blog, puse un tutorial, muy sencillo de entender, para que puedas agarrarle la onda bien a esto, en realidad es muy fácil, te recomiendo pases por mi blog y le des una checadilla a mi publicación, ojala y te sea de utilidad.
    Saludos.

    ResponderEliminar
  4. Bien la explicación y el primer programa, pero recuerda que para este reporte son dos programas. Aún tenemos tiempo para corregir.

    Calificación: 1.5/3

    Saludos...

    ResponderEliminar
  5. hola!!

    bueno creo que tu programa ya esta corregido ...

    y meparecio muy bueno lo que realisate en haskell.. =)

    ResponderEliminar
  6. Que bien que pudiste corregir tu programa, se ven bien realizados.

    ResponderEliminar
  7. muy buen reporte pues el primer programa lo explicaste muy bien.

    ResponderEliminar
  8. Hola estan muy bien tus programas, me gustaron mucho, los explicaste muy bien

    ResponderEliminar
  9. espero modifiques el reporte y tengas los puntos correspondientes

    ResponderEliminar
  10. Hola sofi, me gusto mucho la explicacion para el primer programa, ya que yo tambien explique algo de scheme, el de haskell ,me hubiera gustado ver lo que corria el programa pero aun asi muy bien
    saludos...

    ResponderEliminar