Я хотів би приклад лайни в чистому обчисленні лямбда . Я був дуже здивований, що не міг знайти його по гуглінгу. На сторінці quine перераховані лайки для багатьох "справжніх" мов, але не для обчислення лямбда.
Звичайно, це означає визначити, що я маю на увазі під кволею в обчисленні лямбда, що я роблю нижче. (Я прошу щось досить конкретне.)
У деяких місцях, наприклад, Ларкін і Запаси (2004), я бачу таке, що цитується як "самовідтворюється" вираз: . Це зводиться до себе після одного кроку бета-зменшення, надаючи йому якось почуття, подібне до квінта. Однак він не схожий на квоту, оскільки він не закінчується: подальше бета-скорочення продовжує створювати той самий вираз, тому воно ніколи не зводиться до нормальної форми. Для мене quine - це програма, яка закінчується і видає себе, і тому я хотів би вирази лямбда з цим властивістю.
Зрозуміло, будь-який вираз, який не містить оновлень, вже знаходиться в нормальній формі, і тому припиняється і видається сам. Але це занадто банально. Тому я пропоную таке визначення з надією, що воно визнає нетривіальне рішення:
визначення (орієнтовне): Лайда в обчисленні лямбда - це вираз форми (де означає деякий вираз обчислення лямбда), такого, що стає , або щось еквівалентне йому при зміні імен змінних, коли їх зменшують до нормальної форми, для будь-якого вводу .A ( ( λ x . A )
Зважаючи на те, що лямбда-числення настільки ж рівноцінне Тюрінгу, як і будь-яка інша мова, здається, що це можливо, але моє обчислення лямбда іржавеє, тому я не можу привести приклад.
Довідково
Джеймс Ларкін та Філ Стокс. (2004) "Самовідтворювані вирази в обчисленні лямбда" Конференції з досліджень та практики інформаційних технологій, 26 (1), 167-173. http://epublications.bond.edu.au/infotech_pubs/158