Chciałbym przykład quine w czystym rachunku lambda . Byłem dość zaskoczony, że nie znalazłem go przez google. Strona quine zawiera listę quinów dla wielu „prawdziwych” języków, ale nie dla rachunku lambda.
Oczywiście oznacza to zdefiniowanie, co mam na myśli przez quine w rachunku lambda, co robię poniżej. (Proszę o coś dość konkretnego).
W kilku miejscach, np. Larkin i Stocks (2004), widzę następujące cytowanie jako wyrażenie „samoreplikujące się”: . To zmniejsza się do siebie po pojedynczym etapie redukcji beta, co daje wrażenie quine. Jednak nie jest podobny do quine, ponieważ nie kończy się: dalsze redukcje beta będą wytwarzać ten sam wyraz, więc nigdy nie zmniejszy się do normalnej postaci. Dla mnie quine to program, który sam się kończy i wypisuje, dlatego chciałbym wyrażenie lambda o tej właściwości.
Oczywiście każde wyrażenie, które nie zawiera żadnych powtórzeń, jest już w normalnej formie i dlatego samo się zakończy i wyśle. Ale to zbyt trywialne. Proponuję więc następującą definicję w nadziei, że przyjmie ona nietrywialne rozwiązanie:
definicja (niepewna): Quine w rachunku lambda jest wyrażeniem postaci (gdzie oznacza jakieś określone wyrażenie rachunku lambda), tak że staje się , lub czymś równoważnym przy zmianach nazw zmiennych, po sprowadzeniu do postaci normalnej, dla dowolnego wejścia .
Biorąc pod uwagę, że rachunek lambda jest tak samo równoważny z Turingiem jak każdy inny język, wydaje się, że powinno to być możliwe, ale mój rachunek lambda jest zardzewiały, więc nie mogę wymyślić żadnego przykładu.
Odniesienie
James Larkin i Phil Stocks. (2004) Konferencje „Samoreplikujące się wyrażenia w rachunku Lambda Calculus” w badaniach i praktyce w zakresie technologii informacyjnych, 26 (1), 167-173. http://epublications.bond.edu.au/infotech_pubs/158