The host language

Everything so far has been the grammar, and the grammar is the same wherever you write it: one engine reads one specification, so a plot means what it means regardless of which language built the sentence.

This part is the remainder. Some things belong to the language you are typing in rather than to the grammar, and they cannot be stated once for everybody: how a table gets into data(), how a plot displays in a notebook, and how gog’s + sits beside the operators the language already has. Those are real questions, and answering them in the grammar chapters would mean answering them wrongly for two readers out of three.

All four bindings run today, so all four have a chapter here (Bezanson et al., 2017; Ecma International, 2025; R Core Team, 2026; Van Rossum & Drake, 2009). None of them required the grammar chapters to be rewritten: that is the point of keeping this part separate.

They are ordered R, Python, Julia, JavaScript, and the order says something. The first three write the same sentence three times: the operators are identical, and the only thing that moves is how a column is named, from a bare gdp to col.gdp to :gdp. If you have read the R in this book you can read the Python and the Julia already. JavaScript is the one that genuinely reads differently, because it is the only one of the four that cannot give +, *, | and / new meanings, so it spells them as words. It is last for that reason rather than by seniority.

The four chapters are also the claim being tested. Every sentence in this book was translated and run through every binding, and they draw the same plots to the byte, refuse the same sentences in the same words, and differ only where a chapter is about the host language itself.