Lisp statiquement typé sans ramasse-miettes obligatoire
Bonjour,
Depuis un certain temps, par curiosité intellectuelle, je recherche, parmi les langages qui offrent (ou peuvent offrir) facilement les performances du C, lesquels poussent le plus loin l'abstraction. Idéalement, il faudrait aussi de bons contrôles pendant la compilation.
À propos des performances, pour être plus précis, cette recherche n'exclut pas les langages dont les écarts actuels de performances par rapport au C ne viennent que d'un manque de maturité des compilateurs par rapport à ceux du C.
En C++, les macros du préprocesseur et les templates permettent de faire de l'abstraction sans coût, mais ont des limites.
En langage D, les templates sont meilleurs qu'en C++ et on a plein de fonctionnalités assez balèzes pour faire de l'abstraction sans coût, comme le mot-clef mixin, le static foreach et d'autres fonctionnalités intéressantes, mais cela reste en dessous des macros du Lisp.
Finalement, hier, j'ai pris conscience qu'il était possible de créer un dialecte du Lisp statiquement typé sans ramasse-miettes obligatoire, ce qui permettrait de pousser plus loin l'abstraction offerte par le langage D, tout en ayant la possibilité de conserver les performances du C. En fait, ce n'est pas un problème d'avoir du typage dynamique et d'utiliser le ramasse-miettes pendant la phase d'expansion des macros. Par contre, quand toutes les macros ont été déroulées, il faut que le code généré puisse être entièrement statiquement typé et ne soit pas obligé d'utiliser le ramasse-miettes. Alors, le compilateur peut à la fois faire plein de contrôles et optimiser le plus possible.
Alors, j'ai cherché sur internet et je suis tombé sur une page qui a mentionné plusieurs langages, dont Dale et Carp.
Avant que je ne continue mes recherches, je souhaiterais connaître la réponse à la question suivante :
Parmi les dialectes du Lisp statiquement typés sans ramasse-miettes obligatoire, lesquels sont les moins inconnus ?
Contexte : actuellement, dans ma todo list, du côté des dialectes du Lisp, j'ai prévu de continuer d'étudier le Common Lisp, puis j'étudierai Scheme, puis Racket et Typed Racket. Ensuite, je regarderai peut-être Clojure et Typed Clojure. Après, je me pencherai sur les Lisp statiquement typés sans ramasse-miettes obligatoire, mais je ne sais pas encore par où commencer.