9 points par GN⁺ 2025-04-15 | 2 commentaires | Partager sur WhatsApp
  • Fennel est un langage de programmation qui s’exécute sur la runtime Lua
  • Lua est un langage de programmation simple mais puissant, qui s’intègre facilement dans d’autres programmes et offre aux utilisateurs la possibilité de les reprogrammer
  • Fennel corrige les limites de Lua pour proposer une alternative plus claire et moins sujette aux erreurs
  • Fennel utilise une syntaxe de la famille Lisp, ce qui réduit la complexité syntaxique et améliore la lisibilité du code
  • Fennel apporte des améliorations par rapport à Lua en matière de réaffectation des variables, de notation des tables et de vérification des arguments des fonctions

Qu’est-ce que Fennel ?

  • Fennel est un langage de programmation qui s’exécute sur la runtime Lua
  • Lua est un langage simple mais puissant, qui s’intègre facilement dans d’autres programmes et permet aux utilisateurs de reprogrammer le programme
  • Fennel corrige les limites de Lua pour proposer une alternative plus claire et moins sujette aux erreurs

Les avantages de Lua

  • Lua est un langage petit et rapide, composé d’environ 19 000 lignes de code C et compilé en 278 kb
  • Il conserve une simplicité conceptuelle tout en offrant des fonctionnalités puissantes
  • Il s’intègre facilement dans d’autres programmes pour permettre à l’utilisateur de reprogrammer le programme

Principales caractéristiques de Fennel

  • Fennel utilise une syntaxe de la famille Lisp, ce qui réduit la complexité syntaxique et améliore la lisibilité du code
  • Tout y est traité comme une expression, sans ambiguïté liée à la priorité des opérateurs ou aux retours anticipés
  • Variables : Fennel rend l’usage des variables globales plus difficile afin de réduire les erreurs, et utilise var lors de la réaffectation pour renforcer la clarté

Tables et boucles

  • Fennel améliore la notation des tables en distinguant les tableaux des tables clé/valeur
  • Dans les boucles, l’usage de for et each fournit une syntaxe explicite

Fonctions et autres fonctionnalités

  • Fennel prend en charge la vérification des arguments des fonctions, en produisant une erreur lorsqu’il manque des arguments
  • Il prend en charge la déstructuration et le pattern matching, ce qui permet d’écrire des conditions de manière plus déclarative
  • Il inclut un système de macros, qui permet d’étendre facilement de nouvelles formes syntaxiques

2 commentaires

 
GN⁺ 2025-04-15
Discussion sur Hacker News
  • C’est agréable de voir de nouveaux langages cibler la runtime Lua

    • J’ai récemment rendu un serveur SSE programmable en Lua
    • Je recommande vivement Lua et les bindings Rust mlua-rs
  • Fennel est bien

    • Je ne regrette pas d’avoir converti ma configuration neovim en Fennel
  • En plus de Forth, Lisp et Lua, Tcl mérite aussi d’être mentionné comme petit langage embarqué

    • C’est devenu plus complexe à partir de la version v8, mais les premières versions étaient très simples
    • J’ai été impressionné après avoir lu le livre d’Ousterhout et j’ai essayé de l’implémenter moi-même
  • Je ne comprends pas l’attrait des langages de type Lisp

    • Le parseur est simple et élégant, mais je pense que les développeurs doivent privilégier le confort des utilisateurs
    • Écrire du code est fastidieux et il y a inutilement beaucoup de symboles
    • Parser une syntaxe de type C n’est pas si difficile
  • L’approche de Fennel, qui compile vers Lua tout en conservant des capacités de métaprogrammation, est élégante

    • La syntaxe rappelle Clojure, mais sans la surcharge de la JVM
    • C’est une bonne combinaison pour les systèmes embarqués ou le développement de jeux
  • Fennel est vraiment pas mal

    • J’aimerais qu’il autorise le support des types graduels ou des annotations de type pour les outils statiques
    • Le typage dynamique est un choix valable, mais il devient difficile de revenir en arrière maintenant que davantage de langages prennent en charge le typage graduel
  • Pour ceux qui cherchent d’autres langages construits sur Lua

  • Ceux qui se plaignent des parenthèses n’ont probablement pas assez codé en Lisp

    • Une fois les parenthèses apprivoisées, l’homogénéité du langage ressort et on comprend pourquoi certains aiment Lisp
  • C’est bien pour un développement de jeux décontracté et amusant

    • TIC-80 le prend directement en charge, et il est facile de passer de Fennel à PICO-8
 
nemorize 2025-04-15

Le lien vers MoonScript semble incorrect~
https://moonscript.org/