La citation est tirée de l'ouvrage d'Alan Perlis Epigrammes sur la programmation qui a été publié en 1982.
La signification de cette citation est bien incarnée dans Lisp où il y a des multitudes de fonctions qui opèrent et traitent spécifiquement avec listes Les listes et l'assortiment de fonctions qui opèrent sur les listes permettent d'accomplir beaucoup de choses, ce qui les rend beaucoup plus puissantes que n'importe quelle structure de données à usage unique.
Lua comme autre exemple, utilise des tables pour simuler des classes . Pourquoi utiliser un tableau pour créer des objets au lieu de créer des classes et des objets au niveau du langage comme le font les langages orientés objet ? Puisque votre objet est maintenant une table, vous pouvez utiliser n'importe quel nombre de fonctions définies pour les tables sur votre objet, gratuitement ! Mieux encore, nous n'avons pas eu à encombrer le langage avec une syntaxe spécifique à la classe et à redéfinir les fonctions de la table que nous voulons pour notre classe.
Ce que Perlis a dit est définitivement un mode de pensée proéminent dans Lisp et dans programmation fonctionnelle en général. Ces 100 fonctions sur votre structure de données peuvent être composées ensemble de nombreuses façons uniques, puisqu'elles opèrent toutes sur la même structure de données, mais vous ne pouvez pas vraiment mélanger les 10 fonctions sur 10 structures de données aussi bien, puisqu'elles ont été définies uniquement pour fonctionner sur leur structure de données particulière.
Une variante plus moderne et plus simple de ce principe consiste à penser en termes de abstractions . Si nous codions en Java, préféreriez-vous écrire une centaine de fonctions sur le Liste ou le même ensemble de dix fonctions, une fois pour ArrayList, une fois pour LinkedList, une fois pour .....