Tôi muốn một ví dụ về một quine trong phép tính lambda thuần túy . Tôi đã khá ngạc nhiên khi tôi không thể tìm thấy một người bằng cách googling. Trang quine liệt kê các câu hỏi cho nhiều ngôn ngữ "thực", nhưng không phải cho phép tính lambda.
Tất nhiên, điều này có nghĩa là xác định những gì tôi có nghĩa là một quine trong phép tính lambda, mà tôi làm dưới đây. (Tôi đang yêu cầu một cái gì đó khá cụ thể.)
Ở một vài nơi, ví dụ như Larkin và cổ phiếu (2004), tôi thấy sau đây được trích dẫn như một khái niệm "tự sao chép": . Điều này tự giảm đi sau một bước giảm beta duy nhất, mang lại cảm giác giống như bằng cách nào đó. Tuy nhiên, nó không giống như ở chỗ nó không chấm dứt: việc giảm beta tiếp tục sẽ tiếp tục tạo ra cùng một biểu thức, vì vậy nó sẽ không bao giờ giảm xuống dạng bình thường. Đối với tôi, quine là một chương trình chấm dứt và tự xuất ra, và vì vậy tôi muốn một biểu thức lambda với thuộc tính đó.
Tất nhiên, bất kỳ biểu thức nào không chứa redexes đều ở dạng bình thường, và do đó sẽ tự chấm dứt và xuất ra. Nhưng điều đó quá tầm thường. Vì vậy, tôi đề xuất định nghĩa sau với hy vọng rằng nó sẽ thừa nhận một giải pháp không tầm thường:
định nghĩa (dự kiến): Một quine trong phép tính lambda là một biểu thức có dạng
Cho rằng phép tính lambda tương đương với Turing như bất kỳ ngôn ngữ nào khác, có vẻ như điều này là có thể, nhưng phép tính lambda của tôi bị gỉ, vì vậy tôi không thể nghĩ ra một ví dụ.
Tài liệu tham khảo
James Larkin và Phil Stocks. (2004) "Các biểu thức tự sao chép trong phép tính Lambda" Các hội thảo về nghiên cứu và thực hành trong công nghệ thông tin, 26 (1), 167-173. http://epublications.bond.edu.au/infotech_pub/158