Esistono linguaggi di programmazione (funzionali?) In cui tutte le funzioni hanno una forma canonica? Cioè, ogni due funzioni che restituiscono gli stessi valori per tutto l'insieme di input è rappresentata allo stesso modo, ad esempio se f (x) restituisce x + 1 e g (x) restituisce x + 2, quindi f (f (x )) e g (x) genererebbero file eseguibili indistinguibili durante la compilazione del programma.
Forse ancora più importante, dove / come potrei trovare maggiori informazioni sulla rappresentazione canonica dei programmi (Googling "programmi di rappresentazione canonica" è stato meno che fruttuoso)? Sembra una domanda naturale da porre, e temo di non conoscere il termine corretto per quello che sto cercando. Sono curioso di sapere se è possibile che Turing sia completo e, in caso contrario, quanto sia espressivo un linguaggio di programmazione, pur mantenendo una tale proprietà.
Il mio background è piuttosto limitato, quindi preferirei fonti con meno prerequisiti, ma anche i riferimenti a fonti più avanzate potrebbero essere interessanti, in questo modo saprò su cosa voglio lavorare.