λ-2D : interpréteur visuel du lambda-calcul et Piet λ-2D explore l’interprétation graphique du lambda-calcul et des motifs Piet pour générer des fractales via un interpréteur Python, avec des pistes d’amélioration ambitieuses.
λ-2D est un langage de programmation bidimensionnel qui réunit le lambda-calcul, les diagrammes lambda et Piet. Les programmes prennent forme d’images et s’exécutent visuellement, ouvrant la porte à des fractales comme le triangle de Sierpinski ou l’ensemble de Mandelbrot. Le dépôt propose un interpréteur Python et esquisse des pistes d’amélioration, telles que la mémoïsation, la compilation, ou une réécriture en Rust ou OCaml, ainsi qu’une représentation intermédiaire sous forme de graphe.
λ-2D, un langage visuel fondé sur le lambda-calcul et Piet
Dans λ-2D, la logique du calcul s’empare d’un cadre graphique. Les motifs et les couleurs d’une image déterminent les étapes d’évaluation du lambda-calcul et les transitions entre les opérateurs. Cette fusion avec Piet transforme le code en cheminement visuel, où chaque zone du dessin peut correspondre à une réduction, une application ou une composition. Résultat: au-delà de l’aspect théorique, on obtient une plateforme capable de générer des fractales grâce à l’exécution graphique du programme.
La démonstration pratique consiste à obtenir des motifs comme le triangle de Sierpinski ou l’ensemble de Mandelbrot directement par l’interprétation des motifs, sans écrire une ligne de code classique. Cela permet d’explorer comment les idées abstraites du lambda-calcul se traduisent en images et comment l’interpréteur gère les dépendances et les cycles visuels.
Comment fonctionne l’interpréteur Python et ce que cela ouvre
L’interpréteur fourni lit une image et l’interprète comme un programme λ-2D. Il applique des règles de réduction du lambda-calcul sur des traces graphiques et produit le résultat, lequel peut être une fractale ou une visualisation des calculs. Le choix d’un interpréteur Python offre une base rapide pour tester des idées et démontrer les concepts sans déployer une machine virtuelle complète.
- Mémoïsation : mémoriser les résultats des sous-expressions pour éviter des recalculs coûteux lors des motifs répétés.
- Compilation : transformer le code graphique en une forme exécutable plus rapide, via un backend intermédiaire ou un binaire dédié.
- Portage vers d’autres langages : réécrire l’implémentation en
RustouOCamlpour gagner en performance et en sécurité mémoire. - Représentation intermédiaire en graphe : formaliser les dépendances et les flux de données pour faciliter l’analyse et l’optimisation.
Contexte, limites et ce qu’il reste à explorer
λ-2D s’inscrit dans la famille des langages ésotériques qui servent d’outil pédagogique et d’expérimentation artistique. L’approche visuelle pose des questions de lisibilité et de reproductibilité: deux dessins similaires peuvent être interprétés différemment si les conventions graphiques ne sont pas strictement suivies. Les performances et la portabilité demeurent des enjeux, d’autant plus si l’objectif est d’étendre l’interpréteur vers des systèmes plus exigeants ou des plateformes variées.
En pratique, le potentiel pédagogique est élevé: travailler sur λ-2D force à réfléchir à la sémantique du calcul, à la réduction et à la manière dont les dépendances se traduisent dans une structure graphique. Mais cela demande aussi de clarifier les règles et les conventions pour que les résultats soient reproductibles et compréhensibles par d’autres développeurs.
Pour terminer
λ-2D illustre une approche audacieuse du calcul: écrire du code comme une image et le faire exécuter par un interpréteur. Les prochaines étapes — mémoïsation efficace, un portage vers Rust ou OCaml et une représentation graphique sous forme de graphe — pourraient faire passer l’expérience de démonstration à un cadre plus robuste. Reste à voir comment cette expérience sera adoptée par la communauté et quels exemples concrets de fractales et de comportements émergents naîtront.