Чи існують (функціональні?) Мови програмування, де всі функції мають канонічну форму? Тобто, будь-які дві функції, які повертають однакові значення для всього набору вхідних даних, представлені однаково, наприклад, якщо f (x) повернуто x + 1, а g (x) повернуто x + 2, то f (f (x )) і g (x) генерують нерозрізні виконувані файли при компіляції програми.
Можливо, важливіше, де / як я можу знайти більше інформації про канонічне представлення програм ("канонічні програми представництва" Гуглінга були менш ніж плідними)? Це здається закономірним питанням, і я боюся, що я просто не знаю належного терміна для того, що шукаю. Мені цікаво, чи можливо така мова бути Тюрінгом повною, а якщо ні, то якою виразною мовою програмування ви можете володіти, зберігаючи таку властивість.
Моє передумови досить обмежене, тому я віддаю перевагу джерелам із меншою кількістю передумов, але посилання на більш досконалі джерела теж можуть бути крутими, тому що я буду знати, над чим хочу працювати.