Programación dirigida por datos en Haskell, al estilo SICP

Este artículo del blog Entropic Thoughts recorre la sección 2.4.3 de Structure and Interpretation of Computer Programs (SICP), de Abelson y Sussman, y traslada su ejemplo de programación dirigida por datos al lenguaje Haskell. La idea central es representar números complejos de dos formas —rectangul

Por qué Lisp merece la pena: extensibilidad, homoiconicidad y macros

Este artículo explica las características que hacen de Lisp un lenguaje de programación singular y por qué aprenderlo puede transformar la manera de pensar de cualquier programador. Lisp, cuyo nombre proviene de LISt Processing, se basa en expresiones simbólicas (s-expr) que pueden ser átomos o list

Rhombus: metaprogramación flexible con sintaxis tipo Python

Rhombus es un lenguaje de programación reciente que combina la potencia de la metaprogramación de Racket con una sintaxis sencilla inspirada en Python, basada en indentación y el delimitador ":". Su núcleo se distribuye bajo licencia MIT o Apache 2.0 y se ejecuta sobre el runtime de Racket, lo que l

Alan Kay aclara el significado original de «programación orientada a objetos»

Dos correos electrónicos enviados por Alan Kay —aclamado coinador del término «object-oriented programming»— a Stefan Ram en julio de 2003 arrojan luz sobre el sentido original de la orientación a objetos. En el primero, fechado el 23 de julio, Kay sitúa la primera mención pública del concepto hacia

Cómo programar Lisp en el DEC PDP-1: guía práctica para principiantes

Lisp, creado en 1958 por John McCarthy en el MIT, fue el primer lenguaje simbólico de alto nivel pensado para la investigación en inteligencia artificial y aportó conceptos aún hoy vigentes como la recursión, las expresiones simbólicas y la gestión automática de memoria. Esta guía es una introducció

Common Lisp Metaspec: el estándar ANSI X3J13 en la web

Common Lisp Metaspec es una versión en HTML, renderizada a partir de las fuentes TeX del borrador propuesto para el estándar ANSI de Common Lisp, conocido formalmente como el documento X3J13 número 94-101R. Constituye una referencia técnica completa y navegable del lenguaje, organizada en capítulos

slisp: un compilador sencillo de Lisp a ensamblador para Linux/AMD64

slisp es un compilador de Lisp escrito en Go que traduce programas Lisp a ensamblador autónomo para plataformas Linux sobre AMD64. El nombre del proyecto admite dos lecturas: «Simple Lisp» (Lisp sencillo) o «Steve's Lisp» (el Lisp de Steve), según prefiera el lector. El repositorio, alojado en GitHu

El contexto como clave para reutilizar pruebas en bibliotecas de testing

Este ensayo técnico recoge la experiencia de un año diseñando una biblioteca de pruebas y expone cómo un cambio aparentemente menor en la API —incorporar contexto a las pruebas— resuelve problemas clásicos del testing: la instalación y el desmontaje de entornos, y la reutilización de tests. Tras doc

Lithp: un intérprete en Python del Lisp original de McCarthy

Lithp es un intérprete educativo escrito en Python (2.6.1 o superior) que reimplementa el Lisp descrito por John McCarthy en su trabajo fundacional. Su autor, Fogus, publica el código en GitHub con un nivel de documentación inusual: cada bloque incluye comentarios extensos que explican el razonamien

LispE: el intérprete de objetos compilados

LispE es un intérprete de Lisp implementado en C++ que resuelve la vieja tensión entre interprete y compilador mediante una idea central: cada instrucción del lenguaje se modela como una subclase de una clase raíz llamada Element, y la evaluación se reduce a un único método virtual eval(), uniforme

Rhombus 1.0: un nuevo lenguaje de programación extensible sobre Racket

Rhombus es un lenguaje de programación de propósito general, funcional, dinámico y extensible que acaba de alcanzar su versión 1.0. Está construido sobre Racket, del que hereda herramientas como el entorno DrRacket y la suite de línea de comandos raco, y se activa simplemente iniciando un módulo con

Lisp implementado dentro del sistema de tipos de Rust

El repositorio "lisp-in-types", publicado en GitHub por el usuario playX18, ofrece una implementación del lenguaje de programación Lisp construida por completo sobre el sistema de tipos de Rust, de modo que los programas en Lisp se expresan como tipos y se evalúan en tiempo de compilación mediante t

Cómo escribir un intérprete de Lisp en Python

Este artículo es un tutorial paso a paso para construir un intérprete de Scheme (un dialecto de Lisp) utilizando Python. El texto parte de la premisa de Steve Yegge según la cual, si no se sabe cómo funcionan los compiladores, no se entiende de verdad cómo funcionan los ordenadores, y aplica esa ide

Mis impresiones tras un mes programando en Clojure

Tras un mes utilizando Clojure para reconstruir su sitio web personal, el autor comparte sus impresiones sobre el lenguaje y por qué piensa seguir con él. El autor se acercó a Clojure esperando la sintaxis engorrosa que suele asociarse a los dialectos de Lisp, pero en la práctica lo encontró más er

Por qué deberías probar Janet, un dialecto de Lisp minimalista

En un panorama de lenguajes de programación cada vez más complejos, Janet se presenta como una propuesta singular: un pequeño dialecto de Lisp que combina simplicidad, potencia expresiva y portabilidad. Este artículo del autor del libro 'Janet for Mortals' —publicado en abierto— defiende por qué cua

Lone: intérprete de Lisp en C desde cero

Lone es un intérprete de Lisp escrito en C que se distingue por su desarrollo 'desde cero' sin utilizar librerías estándar como libc. Su sistema de gestión de memoria, conocido como el 'heap', es el tema central de esta explicación y representa un caso de estudio valioso sobre cómo se construyen los

SBCL implementa máquinas virtuales ultrarrápidas con stack de solo 8 ranuras

Este artículo de Paul Khuong explora una técnica innovadora para implementar máquinas virtuales basadas en stack, utilizando SBCL (Steel Bank Common Lisp) como plataforma de experimentación. La idea central es aprovechar un stack muy pequeño (solo 8 ranuras) para evitar el movimiento de datos durant

Paul Graham explica por qué Lisp se impone en el desarrollo web moderno

Lisp en Aplicaciones Web: Una Revolución en el Desarrollo de Software El texto de Paul Graham explora por qué Lisp se convirtió en una elección poderosa para desarrollar aplicaciones web, explicando las ventajas técnicas y prácticas que este lenguaje proporciona. Graham начинает с того, что explic

Nuevo roguelike permite crear hechizos programando expresiones en Lisp

xsofy es un proyecto de roguelike (juego de exploración de mazmorras procedural) desarrollado en un dialecto de Lisp llamado let-go, que es una implementación de Clojure ejecutándose sobre una máquina virtual de Go. La característica más distintiva del juego es su sistema de magia basado en s-expres

Rlisp une sintaxis Lisp con el rendimiento sin runtime de Rust

Un desarrollador ha creado rlisp, un nuevo proyecto que combina la sintaxis de Lisp con la semántica y el rendimiento de Rust. La herramienta funciona como un frontal de expresiones S que compila directamente a código Rust, sin necesidad de runtime ni recolector de basura. El proyecto permite utiliz

Clojure: del código a la infraestructura de Nubank

El documental "Documental" explora la historia de Clojure, un lenguaje de programación funcional que ha evolucionado desde una idea inicial hasta convertirse en la base de la infraestructura de ingeniería de Nubank, uno de los mayores bancos digitales independientes del mundo. Clojure no es un lengu

Scheme: repositorio desacoplado para datos

Este artículo presenta un enfoque innovador para la capa de datos en proyectos Scheme, buscando resolver un problema común: el acoplamiento estrecho entre la capa de control y la implementación específica de la base de datos (en este caso, SQLite). El autor, proveniente de un background en lenguajes

Ruby más simple: experimento con sintaxis Lisp

Este proyecto, llamado 'rubysyn', es un experimento para simplificar y clarificar la sintaxis de Ruby, utilizando una alternativa basada en Lisp. El objetivo no es cambiar la semántica de Ruby, sino ofrecer una sintaxis más fácil de analizar y más 'limpia', eliminando 'azúcar sintáctico' innecesario

IA tropieza con Lisp: Ingeniero crea herramienta para ayudar

Un ingeniero de DevOps ha descubierto una dificultad inesperada al utilizar herramientas de IA para programar en Lisp. A pesar de su preferencia personal por Lisp, la IA, específicamente Claude, tuvo serias dificultades para interactuar con el REPL (Read-Eval-Print Loop), un entorno de desarrollo in

Clojure: lenguaje funcional gana terreno en empresas

Una reciente implementación en Michelin ha impulsado la adopción de Clojure, un lenguaje de programación funcional basado en Lisp, para el desarrollo de aplicaciones empresariales. Inicialmente, el equipo se mostró escéptico al desviarse de la pila de desarrollo estándar (Java), pero rápidamente apr

Compiladores: ¿Más simples de lo que creemos?

El artículo de Golden explora una perspectiva inusual sobre la complejidad de los compiladores de lenguajes de programación. Tradicionalmente, se asume que los compiladores modernos son enormes, con millones de líneas de código que abarcan desde la interfaz de usuario (frontend) hasta la gestión de

Emacs: Técnicas Internas para Manejar Tipos de Datos

Este artículo del blog de The Cloudlet explora técnicas de programación de sistemas utilizadas en GNU Emacs para representar valores Lisp de manera eficiente. El núcleo del problema radica en cómo manejar variables que deben contener valores de diferentes tipos en tiempo de ejecución, preservando la

Emacs: Desentrañando el código Lisp en C

Este artículo de The Cloudlet explora la estructura interna de GNU Emacs, específicamente cómo representa los valores de Lisp (Elisp) en C. El objetivo es comprender el diseño del sistema desde una perspectiva de bajo nivel, desglosando el tipo de dato `Lisp_Object`. La pieza se basa en el conocimie

C++ se inspira en Lisp: nueva herramienta de programación

El proyecto `lmp` (Lisp-style Meta Programming) de Mistivia en GitHub introduce una forma innovadora de realizar programación meta (template metaprogramming) en C++ que se inspira en el paradigma funcional de Lisp. La programación meta en C++ permite escribir código que genera o manipula otro código

Emacs: Nuevo resaltado semántico para código Lisp

El proyecto `lisp-semantic-hl.el` es una extensión para el editor de texto Emacs que mejora significativamente la visualización del código Lisp (tanto Common Lisp como Elisp) a través de un sistema de resaltado de sintaxis semántico. En esencia, el resaltado de sintaxis tradicional colorea palabras

Eshell: la shell integrada de Emacs que debes conocer

Este artículo explora una alternativa inusual a las shells tradicionales (Zsh, Fish, Bash) para usuarios avanzados de Emacs: la Eshell integrada. La Eshell, a menudo pasada por alto, se presenta como una solución elegante para aquellos que ya trabajan principalmente dentro de Emacs y alternan entre

Emacs: ShannonMax optimiza tus atajos de teclado

ShannonMax es una herramienta innovadora para Emacs que utiliza la teoría de la información para optimizar tus atajos de teclado. La idea central es que los comandos que usas con más frecuencia deberían tener atajos más cortos y convenientes, mientras que los comandos poco usados podrían liberarte e

Lisp en Docker: código ejecutable en contenedores

Este proyecto, llamado `docker-lisp`, es una iniciativa fascinante que permite ejecutar código Lisp dentro de contenedores Docker. En esencia, convierte programas Lisp en imágenes Docker ejecutables, lo que abre un abanico de posibilidades para el desarrollo, la ejecución y la distribución de aplica

Lisp: Un Nuevo Libro Revela su Historia e Influencia

Berksoft Publications ha lanzado "El Genio de Lisp", un libro escrito por Cees de Groot que explora la historia y el poder del lenguaje de programación Lisp. Considerado por muchos como uno de los lenguajes más influyentes en la historia de la computación, el libro profundiza en su legado y su impac

NAVER presenta LispE: Nuevo intérprete de Lisp versátil

NAVER, una importante empresa tecnológica surcoreana, ha anunciado el lanzamiento de LispE, un nuevo intérprete de Lisp diseñado para ser compacto y versátil. LispE combina características de lenguajes funcionales y de arreglos, buscando ofrecer una plataforma multi-plataforma para desarrolladores.