Les défis et les solutions des bibliothèques Fennel en un seul fichier

2025-08-13
Les défis et les solutions des bibliothèques Fennel en un seul fichier

Cet article explore les défis de la création de bibliothèques Fennel en un seul fichier, un dialecte Lisp embarqué dans Lua, en particulier les complexités liées à la gestion simultanée des macros et des fonctions. L'auteur dissèque méticuleusement le système de modules de Lua, notamment le fonctionnement de `package.loaded`, `package.preload` et `package.searchers`, en expliquant comment Fennel les utilise pour compiler et charger les modules. Le cœur de l'article se concentre sur la résolution des limitations des macros Fennel, telles que l'impossibilité d'exporter directement les macros et l'interdépendance entre les macros. Une solution ingénieuse est présentée, utilisant `eval-compiler` et `relative-require` pour regrouper les macros et les fonctions dans un seul fichier, et en traitant le chargement des macros en définissant manuellement la table `fennel.macro-loaded` lors de la compilation. Enfin, l'auteur décrit les améliorations futures possibles pour le système de macros Fennel, proposant la suppression des modules de macros, le chargement direct des modules complets lors de la compilation et l'adoption de l'approche de Clojure pour résoudre les dépendances des macros.

Lire plus
Développement

Implémentation de la portée dynamique dans Fennel : une approche astucieuse

2025-07-27
Implémentation de la portée dynamique dans Fennel : une approche astucieuse

L'auteur relève le défi d'implémenter la portée dynamique dans Fennel, un dialecte de Lua où elle n'est pas supportée nativement. L'article explore plusieurs approches, notamment la manipulation des environnements de fonction à l'aide de la bibliothèque de débogage de Lua et le clonage intelligent des fonctions pour définir leurs environnements. Bien que l'auteur décide finalement de ne pas intégrer cette fonctionnalité à la bibliothèque fennel-cljlib pour le moment, l'exploration approfondie des environnements de fonction Lua et de la portée dynamique, ainsi que la comparaison des différentes stratégies d'implémentation, fournissent des informations précieuses sur les concepts de programmation fonctionnelle et de métaprogrammation.

Lire plus
Développement Portée dynamique

Exécuter Fennel depuis Emacs : une extension puissante

2025-07-23
Exécuter Fennel depuis Emacs : une extension puissante

Cet article présente `require-fennel.el`, une extension d’Emacs qui permet d’exécuter Fennel (un dialecte de Lua) dans Emacs. Elle y parvient en communiquant avec un REPL Fennel, permettant la conversion de données et les appels de fonctions entre Emacs Lisp et Fennel. L’auteur montre comment charger des modules Fennel, appeler des fonctions Fennel et utiliser des structures de données Fennel dans Emacs Lisp. De plus, l’extension prend en charge les appels de fonctions Emacs Lisp depuis Fennel, permettant une interaction bidirectionnelle. Cela permet aux développeurs de tirer parti de la concision de Fennel et de la puissance d’Emacs pour un environnement Emacs plus robuste.

Lire plus
Développement