Czy są jakieś (funkcjonalne?) Języki programowania, w których wszystkie funkcje mają formę kanoniczną? Oznacza to, że dowolne dwie funkcje, które zwracają te same wartości dla całego zestawu danych wejściowych, są reprezentowane w ten sam sposób, np. Jeśli f (x) zwrócił x + 1, a g (x) zwrócił x + 2, to f (f (x )) i g (x) generowałyby nierozróżnialne pliki wykonywalne podczas kompilacji programu.
Być może, co ważniejsze, gdzie / jak mogę znaleźć więcej informacji na temat kanonicznej reprezentacji programów (Googling „kanoniczne programy reprezentacji” okazały się mniej niż owocne)? Wydaje się, że to naturalne pytanie, i obawiam się, że po prostu nie znam właściwego terminu na to, czego szukam. Jestem ciekawy, czy taki język może być kompletny w Turingu, a jeśli nie, jak wyrazisty możesz mieć język programowania, zachowując taką właściwość.
Moje tło jest raczej ograniczone, więc wolałbym źródła o mniejszej liczbie wymagań wstępnych, ale odniesienia do bardziej zaawansowanych źródeł też mogą być fajne, ponieważ dzięki temu będę wiedział, nad czym chcę pracować.