On Fri, Dec 6, 2019 at 9:51 AM John Cowan <xxxxxx@ccil.org> wrote:
In general, ! is used with procedures that mutate "previously allocated locations" (variables or Scheme data structures), but not external things like files.  Environment variables are borderline: they're not actually *exposed* as Scheme data, but they are definitely in-process data.  The case could go either way.

In my TerminalsCowan and GraphicsCanvas pre-SRFIs, I do use ! for changing things, perhaps wrongly. 

For what it's worth, MIT Scheme uses the name set-environment-variable!