Jak na ironię, tytuł ma rację, ale nie w sposób, w jaki wydaje się, że miałeś na myśli, że „rachunek lambda jest tylko konwencją notacyjną”, co nie jest dokładne.
Terminy lambda nie są funkcjami 1 . Są to fragmenty składni, tj. Zbiory symboli na stronie. Mamy zasady manipulowania tymi zbiorami symboli, przede wszystkim redukcją beta. Możesz mieć wiele różnych terminów lambda, które odpowiadają tej samej funkcji. 2)
Zajmę się twoimi punktami bezpośrednio.
Po pierwsze, lambda nie jest nazwą, która jest ponownie używana. Byłoby to nie tylko bardzo mylące, ale nie piszemy (lub ), co byśmy zrobili, gdyby była nazwą funkcji, tak jak piszemy . W moglibyśmy zastąpić (gdyby był zdefiniowany terminem lambda) terminem lambda dającym coś w rodzaju znaczenie jest wyrażeniem, które może reprezentować funkcję, a nie deklaracja deklarująca funkcję (o nazwieλ(x)(λ x)λf(x)f(x)f(λy.y)(x)(λy.y)λalbo coś innego). W każdym razie, kiedy przeciążamy terminologię / notację, jest to (można mieć nadzieję) zrobione w sposób, w którym można je jednoznacznie określić kontekstowo, z pewnością nie może tak być w przypadku terminów lambda.
Twój następny punkt jest w porządku, ale trochę nieistotny. To nie są zawody, w których obowiązują Warunki Team Lambda i Funkcje Drużynowe i tylko jeden może wygrać. Głównym zastosowaniem terminów lambda jest studiowanie i rozumienie określonych rodzajów funkcji. Wielomian nie jest funkcją, chociaż często niedbale je identyfikujemy. Badanie wielomianów nie oznacza, że uważa się, że wszystkie funkcje powinny być wielomianami, ani też nie jest tak, że wielomiany muszą „robić” coś „nowego”, aby być wartym przestudiowania.
Ustawione funkcje teoretyczne nie są czarnymi skrzynkami, chociaż są one całkowicie zdefiniowane przez ich relację wejścia-wyjścia. (Dosłownie są ich stosunek wejścia-wyjścia). Wyrażenia lambda nie są również czarne skrzynki i są nie zdefiniowane przez ich relacji nadawczo-odbiorczego. Jak już wspomniałem wcześniej, możesz mieć różne wyrażenia lambda, które wytwarzają tę samą relację przepływów międzygałęziowych. Podkreśla to również fakt, że terminy lambda nie mogą być funkcjami, ale mogą indukować funkcje. 2)
W rzeczywistości analogia między wielomianami a terminami lambda jest bardzo bliska i podejrzewam, że możesz nie docenić różnicy między wielomianem a funkcją, którą reprezentuje, więc rozwinę trochę. 3 Zazwyczaj po wprowadzeniu wielomianów, zwykle o rzeczywistych współczynnikach, są one traktowane jako rzeczywiste funkcje określonego typu. Rozważmy teraz teorię rejestrów przesuwnych z liniowym sprzężeniem zwrotnym (LFSR). Jest to w dużej mierze teoria wielomianów ) w stosunku do , ale jeśli uważamy to za funkcję od , to są najwyżej takie funkcje. Istnieje jednak nieskończona liczba wielomianów w . 4F2F 2 → F 2 4 F 2 F 2 → F 2 F 2 2 N → 2 N. F2→F24F2Jednym ze sposobów na to jest to, że możemy interpretować te wielomiany jako coś innego niż , w rzeczywistości każda zrobi to. W przypadku LFSR zwykle interpretujemy wielomiany jako operacje na strumieniach bitów, które, jeśli chcemy, mogą być reprezentowane jako funkcje , chociaż zdecydowana większość takich funkcji nie byłaby obrazem interpretacji LFSR.F2→F2F22N→2N
Dotyczy to również terminów lambda, możemy interpretować oba z nich jako rzeczy inne niż funkcje. Są to zarówno znacznie łatwiejsze w obsłudze obiekty do pracy niż typowo nieskończenie nieskończone zestawy funkcji. Oba są znacznie bardziej obliczeniowe niż funkcje arbitralne. Potrafię napisać program do manipulowania wielomianami (o współczynnikach, które co najmniej są obliczalne) i wyrażeniami lambda. Rzeczywiście, niepoprawione terminy lambda są jednym z oryginalnych modeli funkcji obliczalnych. Ta bardziej symboliczna / syntaktyczna, obliczeniowa / obliczeniowa perspektywa jest zwykle bardziej podkreślana, szczególnie w przypadku niepisanego rachunku lambda, niż bardziej semantyczne interpretacje rachunku lambda. WpisanyTerminy lambda są znacznie łatwiejsze w zarządzaniu i zwykle (choć nie zawsze) można je łatwo interpretować jako ustawione funkcje teoretyczne, ale zwykle można je interpretować jako jeszcze szerszą klasę rzeczy oprócz funkcji niż niepoprawny rachunek lambda. Mają też bogatą własną teorię syntaktyczną i bardzo głębokie powiązanie z logiką .
1 Możliwe, że problem może pójść w drugą stronę. Być może masz nieporozumienie na temat funkcji.
2 W rzeczywistości nie jest to takie proste. W przypadku niepisanego rachunku lambda tak naprawdę nie ma sensu naiwnie interpretować arbitralnych terminów lambda jako funkcji teoretycznych . Możesz zacząć to dostrzegać, próbując wyrazić, jaka powinna być dziedzina interpretacji. Jeśli interpretuję termin lambda jako element zestawu , chcę również móc interpretować go jako funkcję na i na ponieważ chcę interpretować aplikację jako aplikację funkcji. Skończysz na (lub jego osłabienie), co jest prawdziwe tylko dla zestawu singletonów. Tym, czego potrzebujemy do nietypowego rachunku lambda, jest obiekt refleksyjnyDDDDD⊆D, a dla kategorii zestawów nie ma nietrywialnych obiektów refleksyjnych. Historia jest nieco inna w przypadku typowanych wyrażeń lambda, ale wciąż może być nietrywialna.
3 Jeśli jasno rozumiesz to rozróżnienie, wówczas analogia powinna być bardzo pouczająca.
4 Ten problem nie występuje w przypadku pól o charakterystyce 0, takich jak liczby zespolone, liczby rzeczywiste, liczby wymierne lub liczby całkowite, więc rozróżnienie nie jest tak wyraźne, choć nadal istnieje.