Racket es un lenguaje de programación multiparadigma y de propósito general. Inspirado en Lisp y Scheme. Clojure sería un primo algo cercano.
Según la documentación oficial, es usado para crear otros lenguajes. Es utilizado en áreas de la investigación o educación.
En el código de abajo observamos un programa con interfaz gráfica (GUI) que muestra un "Hola, mundo". Se específica el idioma (Spanish) y se muestra el mensaje.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #lang racket/gui (define my-language 'Spanish) (define translations #hash([Chinese . "你好 世界"] [English . "Hello world"] [French . "Bonjour le monde"] [German . "Hallo Welt"] [Greek . "Γειά σου, κόσμε"] [Portuguese . "Olá mundo"] [Spanish . "Hola mundo"] [Thai . "สวัสดีชาวโลก"] [Turkish . "Merhaba Dünya"])) (define my-hello-world (hash-ref translations my-language "hola mundo")) (message-box "" my-hello-world) |
Como se menciona, Racket es utilizado en:
- Investigación de nuevos lenguajes de programación y se usa para construir DSLs (domain-specific languages), es decir, lenguajes específicos para resolver problemas concretos.
- Su entorno (DrRacket) está diseñado para facilitar el aprendizaje progresivo.
- Se emplea en el desarrollo de aplicaciones GUI o scripts.
- Se puede escribir tanto el backend como el frontend (HTML generativo) en Racket. Entre otras cosas más.
La extensión de un programa en Racket es *.rkt, para no obviar.
Podemos descargar el instalador de Racket en su sitio oficial:
https://download.racket-lang.org/Si no quieres instalar Racket, puedes usar este sitio:
https://onecompiler.com/racketEjemplo 1. El clásico "Hola, mundo".
holamundo.rkt
1 2 | #lang racket/base (display "Hola, mundo en Racket") |
Ejecutamos:
1 | $ racket holamundo.rkt |
En Clojure sería:
1 2 3 4 | (comment El clasico Hola, mundo ) (println "Hola, mundo en Clojure") |
Ejemplo 2. Calcular el factorial de un número.
factorial.rkt
1 2 3 4 5 6 7 8 | #lang racket (define (factorial n) (if (= n 0) 1 (* n (factorial (- n 1))))) (factorial 5) ; devuelve 120 |
Ejecutamos:
1 | $ racket factorial.rkt |
Ejemplo 3. Definir una función que determine si un número es mayor a 100.
mayora100.rkt
1 2 3 4 5 6 7 8 9 | #lang racket (define (mayorA100 n) (if (> n 100) (display "True") (display "False") )) (mayorA100 99) ; |
Ejecutamos:
1 | $ racket mayora100.rkt |
Ejemplo 4. Un programa que solicite el nombre del usuario.
entrada.rkt
1 2 3 4 5 6 | #lang racket (display "¿Cómo te llamas? ") (define nombre (read-line)) (displayln (string-append "¡Hola, " nombre "!")) |
Ejecutamos:
1 | $ racket entrada.rkt |
En conclusión, Racket pertenece a la misma familia de lenguajes Lisp, así que comparte muchas características con Clojure, Common Lisp, y especialmente con Scheme. Como son las siguientes:
- Sintaxis basada en listas.
- Funciones de primera clase.
- Evaluación dinámica (REPL).
- Recursión.
- Macros.
- Tipado dinámico.
Continuaremos con esta serie de lenguajes de programación y con Racket por supuesto.
Enlaces:
https://racket-lang.org/https://es.wikipedia.org/wiki/Racket_(lenguaje_de_programaci%C3%B3n)
https://htdp.org/
Comentarios
Publicar un comentario