Existe-t-il des langages de programmation (fonctionnels?) Où toutes les fonctions ont une forme canonique? C'est-à-dire que deux fonctions qui renvoient les mêmes valeurs pour tout l'ensemble d'entrée sont représentées de la même manière, par exemple si f (x) a renvoyé x + 1, et g (x) a renvoyé x + 2, alors f (f (x )) et g (x) généreraient des exécutables indiscernables lors de la compilation du programme.
Peut-être plus important encore, où / comment pourrais-je trouver plus d'informations sur la représentation canonique des programmes (la recherche sur "programmes de représentation canonique" a été moins que fructueuse)? Cela semble être une question naturelle à poser, et je crains de ne pas savoir le terme approprié pour ce que je recherche. Je suis curieux de savoir s'il est possible qu'un tel langage soit Turing complet, et sinon, à quel point un langage de programmation peut être expressif, tout en conservant une telle propriété.
Mon expérience est plutôt limitée, donc je préférerais des sources avec moins de prérequis, mais les références à des sources plus avancées peuvent aussi être cool, car de cette façon, je saurai vers quoi je veux travailler.