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)
$ ghc -o fac fac.hsfac 0 = 1 fac n = n * fac (n-1) main = print (fac 42)
$ ./fac
1405006117752879898543142606244511569936384000000000
fac 0 = 1
$ ghc -o fac fac.hs
$ ./fac
479001600
2)
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
? sum [1..10]
55La 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!
La explicacion de lenguajes funcionales, esta muy entendible, ademas de describe para que nos pueden servir estos lenguajes.
ResponderEliminarDel programa de scheme como dices es un poco sencilo, en definir are, radio y la operacion,
muy buen reporte
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 :)
ResponderEliminarHola Sofiiia!!
ResponderEliminarOies 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.
Bien la explicación y el primer programa, pero recuerda que para este reporte son dos programas. Aún tenemos tiempo para corregir.
ResponderEliminarCalificación: 1.5/3
Saludos...
hola!!
ResponderEliminarbueno creo que tu programa ya esta corregido ...
y meparecio muy bueno lo que realisate en haskell.. =)
Que bien que pudiste corregir tu programa, se ven bien realizados.
ResponderEliminaresta muy bien tu reporte, saludos
ResponderEliminarmuy buen reporte pues el primer programa lo explicaste muy bien.
ResponderEliminarHola estan muy bien tus programas, me gustaron mucho, los explicaste muy bien
ResponderEliminarespero modifiques el reporte y tengas los puntos correspondientes
ResponderEliminarHola 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
ResponderEliminarsaludos...
Calificación modificada: 3/3
ResponderEliminar