Podstawowe pytanie:
Co robi dla nas rachunek lambda , czego nie możemy zrobić z podstawowymi właściwościami funkcji i notacją ogólnie przyswojoną w algebrze gimnazjalnej?
Przede wszystkim, co oznacza streszczenie w kontekście rachunku lambda? Moje rozumienie słowa abstrakcja jest czymś oddzielonym od maszynerii, konceptualnym streszczeniem pojęcia.
Jednak funkcje lambda, usuwając nazwy funkcji, zapobiegają pewnemu poziomowi abstrakcji. Na przykład:
f(x) = x + 2
h(x, y) = x + 5 y
Ale nawet bez zdefiniowania mechanizmu tych funkcji możemy z łatwością porozmawiać o ich składzie. Na przykład:
1. h(x, y) . f(x) . f(x) . h(x, y) or
2. h . f . f . h
Możemy dołączyć argumenty, jeśli chcemy, lub możemy całkowicie odreagować, aby dać przegląd tego, co się dzieje. I możemy szybko zredukować je do jednej funkcji. Spójrzmy na kompozycję 2. Potrafię mieć studenckie warstwy szczegółów, z którymi mogę pisać w zależności od mojego nacisku:
g = h . f . f . h
g(x, y) = h(x, y) . f(x) . f(x) . h(x, y)
g(x, y) = h . f . f . h = x + 10 y + 4
Wykonajmy powyższe za pomocą rachunku lambda lub przynajmniej zdefiniuj funkcje. Nie jestem pewien, czy to prawda, ale wierzę, że pierwsze i drugie wyrażenie zwiększają się o 2.
(λuv.u(u(uv)))(λwyx.y(wyx))x
I pomnożyć przez 5 lat.
(λz.y(5z))
Zamiast być abstrakcyjnym, wydaje się, że wchodzi to w samą maszynerię tego, co oznacza dodawanie, mnożenie itp. Abstrakcja, moim zdaniem, oznacza wyższy poziom niż niższy poziom.
Co więcej, staram się zrozumieć, dlaczego rachunek lambda jest w ogóle czymś. Jaka jest zaleta
(λuv.u(u(uv)))(λwyx.y(wyx))x
nad
h(x) = x + 5 y
lub notacja łączona
Hxy.x+5y
a nawet notację Haskella
h x y = x + 5 * y
Ponownie, co robi dla nas rachunek lambda, czego nie możemy zrobić z właściwościami funkcji typu f (x) i notacją, z którą wielu jest zaznajomionych.