OT1H, that whole "No side effects!" thing sounds like it often could be great. But OTOH, perhaps only when you explicitly want just a single value as a result, calculated from whatever inputs.

So what about all the other times, like in real-world application programs, where you actually want all kinds of shit to happen? Like saving stuff to disk, committing a database transaction, opening or closing one or more on-screen windows, etc. Or especially, several of those at once. "Those aren't 'side effects', they're what this is supposed to do!", kind of thing.

Summa summarum: It all feels a little too theoretical.