> it was the structural constraint of already being in an immutable context that prompted the cleaner design.<p>Yes! This is what I think most languages retrofitted to include functional features miss: the constraints of immutability and (customarily) no global variables force you to think about what data you actually need where, and often lead to a cleaner design.<p>Constraints are incredibly valuable.
Nice. Although it's not mentioned, it seems like the insight here is partially about the lingering effects on the API of one model of persistence?<p>A log is normally considered a stream that's too large to keep in memory and needs to be incrementally persisted to disk on the fly, in timestamp order. (Or at least, the traditional file-based way does that, which affects the API.) But each HTTP request happens in memory and its log could be kept there.<p>A downside might be if the server crashes in the middle of a request, the request is entirely unlogged? But maybe you could log some values to disk and merge them later.