9 puntos por GN⁺ 2025-04-15 | 2 comentarios | Compartir por WhatsApp
  • Fennel es un lenguaje de programación que se ejecuta sobre el runtime de Lua
  • Lua es un lenguaje de programación simple pero potente, que se integra fácilmente en otros programas y ofrece a los usuarios la posibilidad de reprogramarlos
  • Fennel compensa las desventajas de Lua y ofrece una alternativa más clara y con menos errores
  • Fennel usa una sintaxis de la familia Lisp para reducir la complejidad sintáctica y mejorar la legibilidad del código
  • Fennel ofrece mejoras frente a Lua en aspectos como la reasignación de variables, la notación de tablas y la validación de argumentos de funciones

¿Qué es Fennel?

  • Fennel es un lenguaje de programación que se ejecuta sobre el runtime de Lua
  • Lua es un lenguaje simple pero potente que se integra fácilmente en otros programas y permite que los usuarios los reprogramen
  • Fennel compensa las desventajas de Lua y ofrece una alternativa más clara y con menos errores

Ventajas de Lua

  • Lua es un lenguaje pequeño y rápido, compuesto por unas 19,000 líneas de código en C y compilado en 278 kb
  • Mantiene la simplicidad conceptual y al mismo tiempo ofrece capacidades potentes
  • Se integra fácilmente en otros programas y permite que los usuarios reprogramen el programa

Características principales de Fennel

  • Fennel usa una sintaxis de la familia Lisp para reducir la complejidad sintáctica y mejorar la legibilidad del código
  • Todo se maneja como expresiones, sin ambigüedad por precedencia de operadores ni retornos anticipados
  • Variables: dificulta el uso de variables globales para reducir errores, y usa var al reasignar variables para dar mayor claridad

Tablas y bucles

  • Fennel mejora la notación de tablas para distinguir entre arreglos y tablas clave/valor
  • En los bucles usa for y each para ofrecer una sintaxis clara

Funciones y otras características

  • Fennel admite validación de argumentos en funciones, generando un error cuando faltan argumentos
  • Soporta desestructuración y pattern matching, lo que permite escribir condicionales de forma más declarativa
  • Incluye un sistema de macros que facilita extender nuevas formas sintácticas

2 comentarios

 
GN⁺ 2025-04-15
Opiniones de Hacker News
  • Da gusto ver nuevos lenguajes apuntando al runtime de Lua

    • Hace poco hice programable un servidor SSE con Lua
    • Recomiendo mucho Lua y los bindings de Rust mlua-rs
  • Fennel está muy bien

    • No me arrepiento de haber convertido mi configuración de neovim a Fennel
  • Además de Forth, Lisp y Lua, Tcl merece ser mencionado como un lenguaje embebido pequeño

    • A partir de la versión 8 se volvió más complejo, pero las primeras versiones eran muy simples
    • Leí el libro de Ousterhout, me impresionó e intenté implementarlo yo mismo
  • No entiendo el atractivo de los lenguajes tipo Lisp

    • El parser es simple y elegante, pero creo que los desarrolladores deberían priorizar la comodidad del usuario
    • Es engorroso escribir código y hay símbolos de más sin necesidad
    • Parsear una sintaxis similar a C no es tan difícil
  • El enfoque de Fennel de compilar a Lua mientras conserva capacidades de metaprogramación es elegante

    • La sintaxis recuerda a Clojure, pero sin la sobrecarga de la JVM
    • Es una combinación ideal para sistemas embebidos o desarrollo de videojuegos
  • Fennel es bastante bueno

    • Ojalá permitiera soporte de tipos gradual o anotaciones de tipo para herramientas estáticas
    • El tipado dinámico es una opción válida, pero ya hay tantos lenguajes con soporte gradual de tipos que es difícil volver atrás
  • Información para quienes buscan otros lenguajes construidos sobre Lua

  • Quienes se quejan de los paréntesis probablemente no han programado suficiente en Lisp

    • Una vez superas los paréntesis, la homogeneidad del lenguaje brilla y entiendes por qué a la gente le gusta Lisp
  • Es bueno para desarrollo de juegos casuales y divertidos

    • TIC-80 lo soporta directamente, y es fácil pasar de Fennel a PICO-8
 
nemorize 2025-04-15

Parece que el enlace de MoonScript está mal puesto~
https://moonscript.org/