Elecciones 2026Vea quién creemos que merece su voto, según nuestros criteriosLa guía →
ESCRITO EN ESPAÑOL CLARO.
CLAY TRIBUNE.
Publicidad

Creación de una aplicación GTK en Haskell, Parte 1)

Un desarrollador de Haskell construye una sencilla aplicación de tareas pendientes (to-do) con GTK, empleando un estilo Modelo-Vista-Actualización (Model-View-Update), explicado con código y pruebas claros.

Por mitch·4 min de lectura
A screenshot of a minimalist to-do app with a list of tasks and a toolbar.

Un desarrollador de Haskell ha creado una sencilla aplicación de tareas pendientes (to-do app) utilizando GTK 4 y la biblioteca Adwaita, y el tutorial explica cómo gestionar un modelo, manejar mensajes y construir una vista al estilo de la arquitectura Elm, todo ello manteniendo el código fácil de seguir para los Haskellers de nivel intermedio.

La Ventana Vacía

El tutorial comienza con una ventana mínima. El desarrollador crea un objeto Adwaita «Application» que gestiona los recursos, incluidas las hojas de estilo de Adwaita. El fragmento de código a continuación configura la ventana con un título, tamaño y una barra de herramientas:

haskell
app <- new Adw.Application [#applicationId := "tech.floreal.TodoApp"]
on app #activate (activate app)
Gio.applicationRun app Nothing

Publicidad

Inside the activate function, the window is created and shown:

haskell
window <-
new Adw.ApplicationWindow
[ #application := app
, #title := "Todos"
, #defaultWidth := 480
, #defaultHeight := 640
, #content := toolbar
]
Gtk.windowPresent window

Eso es todo lo que tiene la ventana, título y dimensiones.

Arquitectura Elm en Haskell

El tutorial explica la Arquitectura Elm a través de tres conceptos: Modelo, Vista y Actualización. El Modelo contiene el estado de la aplicación, la Vista convierte el Modelo en una interfaz de usuario y la función Actualización cambia el Modelo en función de los Mensajes. El código utiliza tipos de datos para representar el estado y las acciones.

Aquí se explica cómo se define el estado:

«`haskell newtype TodoId = TodoId Word deriving stock (Show) deriving newtype (Eq, Ord)

data Todo = Todo { id :: TodoId , title :: Text , done :: Bool } deriving stock (Eq, Show)

data Model = Model { todos :: Map TodoId Todo , nextId :: TodoId } deriving stock (Eq, Show) «`

Los Mensajes se representan como un conjunto conocido de interacciones del usuario:

haskell
data Message
= Add Text
| SetDoneStatus TodoId Bool
deriving stock (Eq, Ord)

The update function takes a Message and a Model, then returns a new Model and a list of Effects. The Effects represent actions like saving the to-do list to disk.

Pruebas en GHCi

El tutorial anima a los lectores a probar el código en GHCi, el intérprete de Haskell. Aquí hay una idea de cómo podría verse una sesión:

ghci
ghci> let (m1, e1) = update (Add "Buy leeks") init
ghci> e1
[Save [Todo {id = TodoId 0, title = "Buy leeks", done = False}]]

Entonces, el estado se modifica:

ghci
ghci> let (m2, e2) = update (SetDoneStatus (TodoId 0) True) m1
ghci> e2
[Save [Todo {id = TodoId 0, title = "Buy leeks", done = True}]]

Establecer el estado nuevamente en Verdadero no produce Efectos, por lo que la lista permanece vacía.

Lo que este tutorial logra

La fortaleza del tutorial radica en su claridad. Explica cada parte de la Arquitectura Elm antes de mostrar el código, de modo que los tipos de datos y funciones se presentan como explicaciones en lugar de misterios. El uso de estructuras de datos para mensajes y efectos hace que el comportamiento de la aplicación sea visible de un vistazo.

The code is also clean. The update function is short and easy to follow, and the use of the withTodos helper keeps the code focused on what it is doing.

El tutorial no pretende ser una introducción profunda a GTK o Haskell. Asume que los lectores conocen los conceptos básicos y se centra en la arquitectura. Ese enfoque lo convierte en un buen punto de partida para los desarrolladores que desean aplicar ideas funcionales al trabajo de interfaz de usuario.

El Resumen

Esta es una buena pieza de escritura técnica. Explica una arquitectura compleja en términos sencillos, la respalda con código funcional y proporciona a los lectores una ruta clara a seguir. El código completo está disponible en GitHub en Floreal-Technologies/adwaita-todo.

Para cualquiera que esté interesado en crear aplicaciones en Haskell, este es un buen lugar para comenzar.

Datos clave: – Proyecto: Creación de una aplicación GTK en Haskell, parte 1 – Autor: Feriel Choutri de Tarlé – Código: Disponible en GitHub en Floreal-Technologies/adwaita-todo – Arquitectura: Modelo-Vista-Actualización al estilo de Elm – Bibliotecas: GTK 4, Adwaita, haskell-gi – Dificultad: Haskell intermedio

Steps to follow:
1. Test the update function in GHCi.
2. Build your own small app using the same pattern.

Material fuente: “Creación de una aplicación GTK en Haskell, parte 1”, floreal.tech.

El Cuaderno

Recibe El Cuaderno.

Las mejores historias del día y cada veredicto nuevo, en español claro, en tu correo a las siete. Un correo al día, nada más.

Enviamos una nota para confirmar. Cada número trae un enlace para darte de baja con un clic.

Publicidad

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Como Afiliado de Amazon, Clay Tribune obtiene ingresos por las compras adscritas que cumplen los requisitos aplicables.