The author uses the definition that a pure function must return identical outputs on identical inputs. I actually think a better definition is that the output of a function cannot depend on anything but it's inputs. If we use that definition then the first example he gives where the `sum` function violates pureness is actually not a violation. This is also justified by interpreting a `.valueOf = Math.random` field as a random variable, making the procedure `sum` a map from a random variable to a random variable.
Although impressive, this quiz's content seems cherry picked for situations where bots can do well.
On the one hand we have highly informational content such as the one about the earthquake, earnings report and sports game. Reporting on this kind of information can be done in a context free way. Sentences and paragraphs can be self contained and need not reference each other or greater contexts. I only missed the sports game in part because I'm not an American and was not familiar with the game involved. In hindsight the earnings reports stands out from the others since much broader connections are made then just reporting the raw information itself.
On the other hand we have poetry, which is often so hard to parse that nonsense and genius are hard to tell apart, especially for short excerpts like these. I missed the poetry app one because although it read like nonsense for me, as a non native speaker much of these Shakespearean poems do on first sight. I don't know exactly why but "True Love" and "Absurdistan" immidetly stuck me as fake and real respectivly. For example I thought it was weird to be that her nerves where strained as two tight strings, and that someone would make her drink hot wine. Also the "True Love" excerpt seems very factual and deseperate where "Absurdistan" paints more of an atmosphere.
Row types are a way to encode type information of OOP object in a hindley milner type system. It allows you to type check the kind of ducked objects that are often featured in dynamic OOP languages like ruby and javascript. So you may specify a function on a object containing specific fields or methods without specifying a concrete type:
f :: {left: Number, right: Number} -> Number
f object = object.a + object.b