Re: s7 suggestion Lassi Kortela 29 Oct 2019 16:19 UTC

> so the local variable is happy:
>
> (define xyz
>    (let ((base 123))
>      (keyword-lambda ((offset))
>        (+ base (or offset 0)))))
>
> (writeln (xyz)) ; 123
> (writeln (keyword-call xyz (offset 3))) ;126

Great. Talk to any Scheme implementor about a problem and they are
already aware of it :) And usually have a solution in mind as well.

> (with-let (unlet) ...) goes underneath the global environment, so to speak,
> giving you the built-in startup values, so even set! at the top level won't
> affect it.  There are, of course, many other choices.  I added some more
> examples to s7.html this morning.

Aha, so instead of temporarily "unwinding" the stack of current lexical
environments, it *adds* a copy of the default environment as the
innermost environment. Brilliant.

> I hate to admit I have no idea what docker is -- I'll check it out.

It's a way to run isolated Linux containers inside a Linux system (or
inside a Linux emulation layer on Windows/MacOS). The containers share
the same Linux kernel as the host, but have separate userlands (thanks
to isolation of the file system and process namespaces using Linux
kernel features called "cgroups" and "namespaces"). It's a bit like Plan
9 brute-forced onto stock Linux :) But terrific for safely and easily
spinning up foreign software from the net. FreeBSD jails and Solaris
zones are two similar isolation mechanisms, but are not (yet) as
user-friendly as Docker.