Ir al contenido principal

Entradas

Mostrando las entradas etiquetadas como funcional

Mercury: un lenguaje de programación lógico-funcional

Mercury es un lenguaje de programación lógico-funcional diseñado para aplicaciones de alta confiabilidad. Combina la expresividad de Prolog con un sistema de tipos estático, análisis de modos e inferencia de determinismo. Desarrollado en la Universidad de Melbourne (Australia) por Zoltan Somogyi, Thomas Conway y Fergus Henderson a mediados de los años 90. A diferencia de Prolog , Mercury está compilado y produce código de máquina eficiente. Su paradigma es lógico, funcional y declarativo. ¿Para qué sirve? Es ideal para: Para programas que requieren razonamiento lógico complejo, como sistemas expertos, análisis simbólico, verificación formal y compiladores.  En investigación académica y en proyectos donde la corrección y optimización son críticas. Su compilador genera código eficiente en C o directamente en LLVM , permitiendo alto rendimiento. Relación con Prolog Mercury hereda la semántica lógica de Prolog (basada en resolución y unificación).  U...

Gren: un lenguaje de programación funcional

Gren es un lenguaje de programación funcional con efectos secundarios cuidadosamente gestionados y un sólido sistema de tipos estático. El lenguaje se compone de pocos conceptos con nombres legibles para humanos que se combinan bien, lo que permite lograr más con menos. Su objetivo es poder escribir código que se ejecute tanto en el navegador como en el backend . Algunas de sus características más notables son: Compila a JS, con enfoque a WASM .  Es muy portable.  Tiene soporte incorporado para Node.  Tiene evaluación estricta y soporte de source-map .  Fácil  depuración y el perfilado utilizando las mismas herramientas que usarías para Node o navegadores. Para instalarlo tenemos dos opciones. Con Npm: $ npm install - g gren - lang Con Nix : $ nix - shell - p gren Un vistazo a Gren Gren es bastante similar al lenguaje de programación Elm.  Demos un pequeño vistazo al lenguaje. Tipos de datos en Gren . ...

Nuevos lenguajes de programación funcional (similares a Haskell)

Los lenguajes de programación funcional hacen que el programador habitual a usar lenguajes como Java y/o C (con paradigma orientado a objetos y estructurado, respectivamente) se den topes en la pared. Y es que con la programación funcional el programador solo escribe lo que quiere obtener, pero no el cómo hacerlo. El paradigma de programación funcional es similar a las matemáticas. Uso de expresiones que resuelven algo, pero no te dicen el paso a paso. Se centra en: Funciones puras.  Inmutabilidad de datos. Composición de funciones para construir software predecible, evitando efectos secundarios y estados compartidos. Uno de los lenguajes que más refleja este paradigma es Haskell. Ya hemos hablado de el en varias ocasiones: https://alquimistadecodigo.blogspot.com/2021/03/haskell-for-todos.html https://alquimistadecodigo.blogspot.com/2021/03/haskell-for-todos-2.html https://alquimistadecodigo.blogspot.com/2021/05/haskell-fot-todos-3.html https://alq...

Elm: creando una sencilla aplicación

Como vimos en un anterios post: Elm es un lenguaje funcional que se compila en JavaScript. Te ayuda a crear sitios web y aplicaciones web. Tiene un fuerte énfasis en la simplicidad y la calidad de las herramientas. Veremos cómo instalarlo usando Node (Npm). 1 $ npm install -g elm Listamos versión instalada: 1 $ elm --version Instalar Elm-Live: 1 $ npm install -g elm-live Instalar Elm-Format: 1 $ npm install -g elm-format Crear un proyecto: 1 2 3 $ mkdir myproject $ cd myproject $ elm init En el directorio `` src `` crear un programa `` Main.elm `` 1 2 3 4 5 6 7 8 -- Module: modulo del programa module Main exposing ( .. ) -- Imports: las importaciones import Html -- Main: funcion principal main = Html . text "¡Hola, mundo en Elm!" Construir: 1 $ elm make src/Main.elm --output = main.js Usar Elm-Live: 1 $ elm-live src/Main.elm --open Esto abrirá el navegador en la dirección: http://localhost:8000/ ¡Hemos cre...

Lenguajes JVM: Clojure & Groovy

Un lenguaje dependiente de la JVM es aquél que corre bajo, valga la redundancia, la Java Virtual Machine. Java tiene la filosofía de: "Escribe una vez, ejecuta en todas partes" o "Write once, run everywhere" . Lo que significa que una vez compilado y creado el .class, tu programa debería ejecutarse en cualquier Sistema Operativo. Lenguajes como Clojure, Groovy, Kotlin, Scala y otros más, en teoría, cumplen con la misma filosofía. Clojure Es un lenguaje de programación: Multiparadigma. Basado en LISP. Permite la programación funcional y orientada a objetos. Dinámico. Promueve la inmutabilidad, incluyendo las estructuras inmutables. Clojure fue creado por Rich Hickey. Si te interesa leer la historia de este lenguaje, echa un vistazo acá: https://clojure.org/about/history holamundo.clj ( println "Hola, mundo!!" ) Clojure tiene una sintaxis casi idéntica a LISP. El manejo de paréntesis es su sello particular. También se le " acusa ...

Haskell for Todos 6

Existe un libro sobre Haskell que se puede leer en la web llamado: "Real World Haskell" Escrito por Bryan O'Sullivan, Don Stewart, y John Goerzen. Para quienes gusten de querer aprenderlo (y usarlo en proyectos de la vida real). Dejamos el link al libro en los enlaces. Enlaces: https://book.realworldhaskell.org/read/

OCaml en Windows

OCaml es un lenguaje de programación: funcional de potencia industrial con énfasis en la expresividad y la seguridad. OCaml es un lenguaje de programación versátil y poderoso que combina las mejores características de la programación funcional, imperativa y orientada a objetos. Su fuerte sistema de tipos y su eficiencia lo hacen adecuado para una amplia variedad de aplicaciones, desde sistemas críticos hasta investigación académica. Hoy en día existen plugins en editores como VS Code que te permitirán escribir tus programas. En este post instalaremos OCaml en entornos Windows En un post pasado vimos como instalarlo en Linux (Ubuntu): https://alquimistadecodigo.blogspot.com/2021/04/un-vistazo-ocaml.html Abrimos una terminal y tecleamos: winget install Microsoft.VisualStudio.2019.BuildTools --override "--wait --passive --installPath C:\VS --addProductLang En-us --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended" winget install Git.Git ...

Clojure for Beginner (3)

En esta serie de post de Clojure for Beginners veremos más ejemplos. La interoperabilidad es uno de los temas que más le interesan a los programadores. Los programadores Java verán que no es una promesa, sino más bien una realidad. Clojure en verdad lo permite. Basta ver un ejemplo. Ejemplo 1 . Creamos un programa para obtener el cuadrado de un número. En este ejemplo la entrada es 12 y el cuadrado de ese número será 144. ( import ' ( javax.swing JOptionPane )) ;' ( defn introduceDato [ s ] ( JOptionPane/showInputDialog ( str s ) ) ) ( def numero ( introduceDato "Introduce numero:" )) ;;convertir String a número ( defn String->Number [ str ] ( let [ n ( read-string str )] ( if ( number? n ) n nil ))) ;;función cuadrado ( defn cuadrado [ n ] ( * n n ) ) ;;'main' del programa ( try ( JOptionPane/showMessageDialog nil , ( str "El numero introducido es: " numero ) ) ( JOptionPane/showMessageDi...