{
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: '130',
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: {}
}