{ localUrl: '../page/quine.html', arbitalUrl: 'https://arbital.com/p/quine', rawJsonUrl: '../raw/322.json', likeableId: '1987', likeableType: 'page', myLikeValue: '0', likeCount: '3', dislikeCount: '0', likeScore: '3', individualLikes: [ 'EricBruylant', 'NateSoares', 'EricRogstad' ], pageId: 'quine', edit: '5', editSummary: '', prevEdit: '4', currentEdit: '5', wasPublished: 'true', type: 'wiki', title: 'Quine', clickbait: 'A computer program that prints (or does other computations to) its own source code, using indirect self-reference.', textLength: '1822', alias: 'quine', externalUrl: '', sortChildrenBy: 'likes', hasVote: 'false', voteType: '', votesAnonymous: 'false', editCreatorId: 'NateSoares', editCreatedAt: '2016-05-08 20:27:17', pageCreatorId: 'PatrickLaVictoir', pageCreatedAt: '2016-04-03 22:00:33', seeDomainId: '0', editDomainId: 'AlexeiAndreev', submitToDomainId: '0', isAutosave: 'false', isSnapshot: 'false', isLiveEdit: 'true', isMinorEdit: 'false', indirectTeacher: 'false', todoCount: '0', isEditorComment: 'false', isApprovedComment: 'true', isResolved: 'false', snapshotText: '', anchorContext: '', anchorText: '', anchorOffset: '0', mergedInto: '', isDeleted: 'false', viewCount: '100', text: 'A quine is a computer program that 'knows' its own entire source code via indirect self-reference, rather than by getting it as input. The classic exercise in this domain is writing a (non-empty) program that takes no input and which outputs its own entire source code. But the same trick can be used to do more than that; for any program that takes a string as input and performs some operations on it, we can write a quining program that takes no input and performs the same operations on the program's own source code.\n\nThe trick to write a quining program is to take a recipe for substituting a string into various places in a program, and then to apply this recipe to itself. If you've not encountered this idea before, but you know a programming language, it is a nice exercise to try and write a quine which prints its own source code.\n\nAn example of a quine in Python (due to [32]) which prints its own source code:\n\n\ttemplate = 'template = {hole}\\nprint(template.format(hole=repr(template)))'\n\tprint(template.format(hole=repr(template)))\n\nWikipedia has a [list of examples of quining programs](https://en.wikipedia.org/wiki/Quine_(computing)#Examples) in various languages.\n\nNamed after the logician [W.V.O. Quine](https://en.wikipedia.org/wiki/Willard_Van_Orman_Quine), as coined by [Douglas Hofstadter](https://en.wikipedia.org/wiki/Douglas_Hofstadter) in [Gödel, Escher, Bach](https://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach), in the informal context of English phrases like\n\n> "Yields falsehood when preceded by its quotation" yields falsehood\n> when preceded by its quotation.\n\nQuining has been used for practical purposes and even seen in the wild, most famously in [Ken Thompson's illustration of a C compiler Trojan backdoor](http://en.wikipedia.org/wiki/Backdoor_(computing)#Compiler_backdoors).', metaText: '', isTextLoaded: 'true', isSubscribedToDiscussion: 'false', isSubscribedToUser: 'false', isSubscribedAsMaintainer: 'false', discussionSubscriberCount: '1', maintainerCount: '1', userSubscriberCount: '0', lastVisit: '', hasDraft: 'false', votes: [], voteSummary: [ '0', '0', '0', '0', '0', '0', '0', '0', '0', '0' ], muVoteSummary: '0', voteScaling: '0', currentUserVote: '-2', voteCount: '0', lockedVoteType: '', maxEditEver: '0', redLinkCount: '0', lockedBy: '', lockedUntil: '', nextPageId: '', prevPageId: '', usedAsMastery: 'false', proposalEditNum: '0', permissions: { edit: { has: 'false', reason: 'You don't have domain permission to edit this page' }, proposeEdit: { has: 'true', reason: '' }, delete: { has: 'false', reason: 'You don't have domain permission to delete this page' }, comment: { has: 'false', reason: 'You can't comment in this domain because you are not a member' }, proposeComment: { has: 'true', reason: '' } }, summaries: {}, creatorIds: [ 'PatrickLaVictoir', 'NateSoares' ], childIds: [], parentIds: [ 'godel_codes', 'diagonal_lemma' ], commentIds: [], questionIds: [], tagIds: [], relatedIds: [], markIds: [], explanations: [], learnMore: [], requirements: [], subjects: [], lenses: [], lensParentId: 'diagonal_lemma', pathPages: [], learnMoreTaughtMap: {}, learnMoreCoveredMap: {}, learnMoreRequiredMap: {}, editHistory: {}, domainSubmissions: {}, answers: [], answerCount: '0', commentCount: '0', newCommentCount: '0', linkedMarkCount: '0', changeLogs: [ { likeableId: '0', likeableType: 'changeLog', myLikeValue: '0', likeCount: '0', dislikeCount: '0', likeScore: '0', individualLikes: [], id: '17233', pageId: 'quine', userId: 'JaimeSevillaMolina', edit: '0', type: 'newParent', createdAt: '2016-07-21 17:36:30', auxPageId: 'diagonal_lemma', oldSettingsValue: '', newSettingsValue: '' }, { likeableId: '0', likeableType: 'changeLog', myLikeValue: '0', likeCount: '0', dislikeCount: '0', likeScore: '0', individualLikes: [], id: '9657', pageId: 'quine', userId: 'NateSoares', edit: '5', type: 'newEdit', createdAt: '2016-05-08 20:27:17', auxPageId: '', oldSettingsValue: '', newSettingsValue: '' }, { likeableId: '0', likeableType: 'changeLog', myLikeValue: '0', likeCount: '0', dislikeCount: '0', likeScore: '0', individualLikes: [], id: '9627', pageId: 'quine', userId: 'PatrickLaVictoir', edit: '4', type: 'newEdit', createdAt: '2016-05-06 17:29:58', auxPageId: '', oldSettingsValue: '', newSettingsValue: '' }, { likeableId: '0', likeableType: 'changeLog', myLikeValue: '0', likeCount: '0', dislikeCount: '0', likeScore: '0', individualLikes: [], id: '9626', pageId: 'quine', userId: 'PatrickLaVictoir', edit: '3', type: 'newEdit', createdAt: '2016-05-06 17:24:26', auxPageId: '', oldSettingsValue: '', newSettingsValue: '' }, { likeableId: '0', likeableType: 'changeLog', myLikeValue: '0', likeCount: '0', dislikeCount: '0', likeScore: '0', individualLikes: [], id: '9209', pageId: 'quine', userId: 'PatrickLaVictoir', edit: '2', type: 'newEdit', createdAt: '2016-04-03 22:12:26', auxPageId: '', oldSettingsValue: '', newSettingsValue: '' }, { likeableId: '0', likeableType: 'changeLog', myLikeValue: '0', likeCount: '0', dislikeCount: '0', likeScore: '0', individualLikes: [], id: '9207', pageId: 'quine', userId: 'PatrickLaVictoir', edit: '1', type: 'newEdit', createdAt: '2016-04-03 22:00:33', auxPageId: '', oldSettingsValue: '', newSettingsValue: '' } ], feedSubmissions: [], searchStrings: {}, hasChildren: 'false', hasParents: 'true', redAliases: {}, improvementTagIds: [], nonMetaTagIds: [], todos: [], slowDownMap: 'null', speedUpMap: 'null', arcPageIds: 'null', contentRequests: {} }