Przypomnij sobie, że kombinator K jest stałą funkcją. To zawsze wraca swój pierwszy argument:Jak stworzyć kombinator K w zaczarowanym lesie? (Aby wyśmiać przedrzeźniacz)
Kxy = x for all y
W książce drwić drozda autor przedstawia przykład zaczarowanym lesie zawierającym ptaki rozmawiają. Ptaki mają zachowanie:
Biorąc pod uwagę wszystkie ptaki A i B, jeśli wywołasz imię B do A, wtedy A odpowie, wytykając ci imię jakiegoś ptaka: ten ptak zostanie oznaczony przez AB.
Załóżmy, że las składa się z trzech ptaków: A, B i C. Czy przynajmniej jedno z ptaków zachowuje się jak kombinator K?
Poniżej znajduje się tabela przedstawiająca możliwy zestaw zachowań ptaków w zaczarowanym lesie. Pierwsza kolumna ma nazwę każdego ptaka w lesie. Górny rząd ma nazwy, które mogą być wywołane do każdego ptaka. Ciało jest odpowiedzią ptaka na imię. Na przykład, jeśli wywołasz nazwę A do ptaka A, ptak A odpowie C (patrz wiersz 2, kolumna 2). Zwięźle, AA = C. Jeśli wywołasz nazwę B do ptaka A, ptak A odpowie odpowiedzią B (patrz wiersz 2, kolumna 3). Zwięźle, AB = B. Jaką wartość powinien przejść do pustego gniazda AC?
| A B C
------------------
A | C B
B | B B B
C | A A A
Zobaczmy, czy możemy sprawić, by ptak A zachowywał się jak kombinator K. Powyższy zestaw wartości wygląda obiecująco:
AA = C i Cy = A dla wszystkich y. To znaczy (AA) y = A dla wszystkich y.
AB = B i By = B dla wszystkich y. Oznacza to, że (AB) y = B dla wszystkich y.
Jakie wartości powinny być umieszczone w pustym gnieździe (AC)? Rozważyć wszystkie przypadki:
Jeśli AC = A wtedy wartość Ay C musi być dla wszystkich y, która jest wyraźnie fałszywe. Dlatego A nie może być poprawną wartością pustego gniazda.
Jeśli AC = B, wówczas wartość By musi być C dla wszystkich y, co jest oczywiste, że fałsz. Dlatego B nie może być poprawną wartością pustego gniazda.
Jeśli AC = C, wartość Cy musi być równa C dla wszystkich y, co jest oczywiste, że fałsz. Dlatego C nie może być poprawną wartością pustego gniazda.
Dlatego żadna wartość nie może być umieszczona w pustym gnieździe, aby spełnić warunek (AC) y = C, dla każdego y.
O ile wiem, niemożliwe jest, aby jakikolwiek ptak zachowywał się jak kombinator K. Mam nadzieję, że mi się nie uda.
Czy C (jak stała) nie jest już kombinatorem K? – Ingo
B jest stałą funkcją KB, a C jest stałą funkcją KA, ale nie jest także kombinatorem K. –
Pierwsze zdanie twojego pytania nie jest prawdziwe. Kombinator K nie jest stałą funkcją, chociaż produkuje stałe funkcje jako wynik. –