And so I implemented my idea [1] in about all of an hour. The code itself is pretty straightforward:
require "org.conman.math".randomseed() local fixcase = Cs( (R"az" / function(c) return c:upper() end + P(1)) * P(1)^0 ) local function lookup(term) local list if dict[term] then list = dict[term] else local l = fixcase:match(term) if dict[l] then list = dict[l] else return term end end return list[math.random(#list)] end local word = R("''","--","AZ","az")^1 local term = word / lookup + P(1) local corpus = Cs(term^1) local count = Cf( Cc(0) * (word * Cc(1) + P(1) * Cc(0))^1, function(acc,count) return acc + count end ) local text = "Love" local num local loop = 0 repeat loop = loop + 1 text = corpus:match(text) num = count:match(text) until num >= 50000 print(string.format([[ Love is ... A Definitional Novel in %d expansions and %d words ]],loop,num)) print(wrap(text))
The first line initializes the random number generator, then an LPeg [2] expression to uppercase the leading character of a word (that's how most of the terms in the dictionary I used appear). Then we have a function that returns either a random defintion of a given term, or if no definition exists, the term itself. Next is the definition of a “word” with the expression word—one or more letters, dashes or apostrophes. The next expression, term, either finds a “word” and does the definition lookup via lookup() or just whatever non-word text it finds (punctuation marks mostly). The expression corpus will run term multiple times, replacing the input with the translated output (this is a “substitution capture [3] as it's called in LPeg).
The count expression just counts words—it's a folding capture [4] which accumulates a single result. In this case, we start with 0 (Cc(0) [5]), then for each “word” in the input it returns a 1; otherwise a 0 (word * Cc(1) + P(1) * Cc(0)), which is added to our accumulator using the given anonymous function.
Then it's a matter of starting with “Love” and running this a few times until we get over 50,000 words.
What I didn't expect (but should have) is the “Wall Of Text” that is generated:
To denote having as a possession or an appendage; as, the firmament with its stars; a bride with a large fortune. One of whom inquires can be made as to the integrity, capacity, and the like, of another. Apposition; connection; antithesis; opposition; as, they engaged hand to hand. a That which terminates, circumscribes, restrains, or confines; the bound, border, or edge; the utmost extent; as, the limit of a walk, of a town, of a country; the limits of human knowledge or endeavor. Denoting nearness or distance, either in space or time; from; as, within a league of the town; within an hour of the appointed time. The period at which any definite event occurred, or person lived; age; period; era; as, the Spanish Armada was destroyed in the time of Queen Elizabeth; – often in the plural; as, ancient times; modern times.; as, With privilege or possession; – used to denote a holding, possession, or seisin; as, in by descent; in by purchase; in of the seisin of her husband. an A measure of distance traveled.; As a substance for any noun of the neuter gender; as, here is the book, take it home. happened One who is in office; – the opposite of out. See Thee. A wooden block shaped like the human foot, on which boots and shoes are formed. A division of the Roman people formed according to their property, for the purpose of voting for civil officers.; To inclose; to take in; to harvest. all Of or belonging to me; – used always attributively; as, my body; my book; – mine is used in the predicate; as, the book is mine. See Mine. The potential principle, or force, by which the organs of animals and plants are started and continued in the performance of their several and cooperative functions; the vital force, whether regarded as physical or spiritual‥ A Freely; licentiously. Yellow or gold color, – represented in drawing or engraving by small dots. Worthy of consideration; requiring to be observed, borne in mind, or attended to. A numeral; a word or character denoting a number; as, to put a number on a door‥ phrases, and To denote a connection of friendship, support, alliance, assistance, countenance, etc.; hence, on the side of. That which refers to something; a specific direction of the attention; as, a reference in a text-book. Extent; limit; degree of comprehension; inclusion as far as; as, they met us to the number of three hundred. a The space or thing defined by limits. Denoting the agent, or person by whom, or thing by which, anything is, or is done; by. To measure, as in music or harmony.; as, With reference to circumstances or conditions; as, he is in difficulties; she stood in a blaze of light. an Fixed or appointed time; conjuncture; a particular time or occasion; as, the hour of greatest peril; the man for the hour.; As a substitute for such general terms as, the state of affairs, the condition of things, and the like; as, how is it with the sick man? happened With reference to circumstances or conditions; as, he is in difficulties; she stood in a blaze of light. A word placed before nouns to limit or individualize their meaning. A wooden block shaped like the human foot, on which boots and shoes are formed. A division of the Roman people formed according to their property, for the purpose of voting for civil officers.; The specific signification of in is situation or place with respect to surrounding, environment, encompassment, etc. It is used with verbs signifying being, resting, or moving within limits, or within circumstances or conditions of any kind conceived of as limiting, confining, or investing, either wholly or in part. In its different applications, it approaches some of the meanings of, and sometimes is interchangeable with, within, into, on, at, of, and among. all Of or belonging to me; – used always attributively; as, my body; my book; – mine is used in the predicate; as, the book is mine. See Mine. Figuratively: The potential or animating principle, also, the period of duration, of anything that is conceived of as resembling a natural organism in structure or functions; as, the life of a state, a machine, or a book; authority is the life of government‥ (usually Relating to, or containing, more than one; designating two or more; as, a plural word.) an acquaintance Ere; before; sooner than. acquaintances Originally, an interrogative pronoun, later, a relative pronoun also; – used always substantively, and either as singular or plural. See the Note under What, pron., 1. As interrogative …
“Love is … [6]”
and so on for another 12,856 lines.
A literal “Wall Of Text.”
It also overshot the 50,000 words by 120,007 words. Yes, there are a total of 170,007 words (minus the title) in this “novel.” And what was totally surprising to me is the number of times through the expansion loop—only four.
From “Love” to “To denote having as a possession or an appendage; as, the firmament …” in four steps.
I found the “ending” to be somewhat amusing:
… Denoting identity or equivalence; – used with a name or appellation, and equivalent to the relation of apposition; as, the continent of America; the city of Rome; the Island of Cuba. To work, as raw or partly wrought materials, into suitable forms for use; as, to manufacture wool, cotton, silk, or iron… adventures.
“Love is … [7]”
Apparantly, love contains tourist hotspots, industrial production and adventures. Who knew?
[3] http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html#cap-
[4] http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html#cap-
[6] https://github.com/spc476/NaNoGenMo-2017/blob/master/love-is.txt
[7] https://github.com/spc476/NaNoGenMo-2017/blob/master/love-is.txt