Appendix D — Sources
The chapters link out at the point of use. This is the same shelf, grouped so you can see what kind of document each one is. Manuals beat blog posts. Source beats manuals when they disagree. Papers beat this book’s readings of the papers.
D.1 The runtime, primary
- R Internals, for R 4.6.1 (2026-06-24). SEXPTYPEs, the header, allocation classes, environments, attributes, special primitives, the character cache. The manual warns that it is a work in progress. Believe it, and check the source when a sentence is load-bearing.
- The R Language Definition. The C-syntax / Lisp-and-APL-semantics paragraph, and the chapter on computing on the language.
src/main/memory.cin thewch/r-sourcemirror. Nil’s initialization, node classes, the generational heap. The comment “or armageddon happens” is not a joke you need to improve on.src/include/Defn.h.REFCNTMAX,MARK_NOT_MUTABLE, the increment and decrement macros that refuse to move a saturated count.- Luke Tierney, Notes on Reference Counting in R. The design note from when reference counting was still opt-in. Read it for motivation and for the list of holders that deliberately do not count. Do not read it as a description of the compile flags in a current release. Current dumps print
REF(n)because the switch happened. - Luke Tierney, Gabe Becker, and Tomas Kalibera, ALTREP: Alternative Representations for R Objects. The design note. The 2017 DSC slides circulate as a PDF; the tech-doc index is developer.r-project.org/TechDocs.
D.2 The language, primary
- John M. Chambers, S, R, and Data Science, The R Journal 12/1 (2020). The three principles, in his wording, with the 1976 blackboard and the reason there are no scalars. The book he points at is Extending R (Chapman and Hall/CRC, 2016), pages 4–11.
- Ross Ihaka and Robert Gentleman, R: A Language for Data Analysis and Graphics, Journal of Computational and Graphical Statistics 5/3 (1996).
- Floréal Morandat, Brandon Hill, Leo Osvald, and Jan Vitek, Evaluating the Design of the R Language, ECOOP 2012.
- Hadley Wickham, Advanced R, 2nd ed., 2019. In particular names and values, environments, object systems, and conditions.
- Hadley Wickham, A Layered Grammar of Graphics, Journal of Computational and Graphical Statistics 19/1 (2010). Wilkinson’s Grammar of Graphics (Springer, 2005) is the prior vocabulary.
- httr2, ellmer, cli, and rlang::try_fetch().
- The companion design manual: S7 Design Notes.
D.3 Conditions, types, and shells
- Robert Gentleman and Luke Tierney, A Prototype of a Condition System for R. Exiting handlers versus calling handlers, from the people who put the mechanism in the language.
- Kent M. Pitman, Condition Handling in the Lisp Language Family (2001). The Common Lisp mechanism itself is HyperSpec chapter 9.
- Alexis King, Parse, don’t validate (2019).
- John Launchbury and Simon Peyton Jones, “Lazy Functional State Threads,” POPL 1994. The paper behind
runST. Microsoft Research hosts the publication. - Gary Bernhardt, Boundaries (SCNA 2012). The phrase “functional core, imperative shell” is his screencast of that name, dated 2012-07-12: Functional Core, Imperative Shell.
- Eric Evans, Domain-Driven Design (Addison-Wesley, 2003). Ubiquitous language: one shared vocabulary for the people and the model. Scaling that habit down to a package is this book’s recommendation, not a sentence from the book.
- The Rust book, chapter on traits and the Rust API guidelines. Read these before repeating the “R is just like Rust” line to someone who writes Rust. The shared posture is open operations over types. The ownership story does not transfer.
D.4 PowerShell and the view layer
- Jeffrey P. Snover, the Monad manifesto, 8 August 2002. Microsoft Learn hosts it; the PDF is the text. “Instead of piping unstructured text, we pipe .NET objects.”
- about_Output_Streams and about_Redirection. Stream numbers. See the open question on the version-introduced discrepancy before you cite a year.
- about_Format.ps1xml. Views affect display only. Built-in views moved into source in PowerShell 6. The separation is the idea; the XML is the aged vehicle.
D.5 What not to cite this book for
Do not cite it for a guarantee about a future R, or for S7 behavior past what the S7 design notes have rechecked. Do not cite the Cairo / WinFS paragraph as a history of .NET; it is a warning against a bad history. Do not cite a REF count from an IDE session as a property of an expression. Cite the manuals, the source, and the probes in verification/ for anything that has to survive contact with a different machine.