Sujet : Re: REPL in Lisp
De : kehoea (at) *nospam* parhasard.net (Aidan Kehoe)
Groupes : comp.lang.lisp comp.lang.schemeDate : 14. Jul 2024, 23:03:53
Autres entêtes
Message-ID : <87jzhn65za.fsf@parhasard.net>
References : 1 2 3 4 5
User-Agent : Gnus/5.101 (Gnus v5.10.10) XEmacs/21.5-b35 (Linux-aarch64)
Ar an ceathrú lá déag de mí Iúil, scríobh George Neuner:
> On Sat, 13 Jul 2024 08:24:27 +0100, Aidan Kehoe <
kehoea@parhasard.net>
> wrote:
>
> >
> > Ar an dara lá déag de mí Iúil, scríobh Kaz Kylheku:
> >
> > > On 2024-07-11, Lawrence D'Oliveiro <
ldo@nz.invalid> wrote:
> > > > On Wed, 10 Jul 2024 19:11:17 -0700, HenHanna wrote:
> > > >
> > > >> the acronym (?) REPL must be new in Lisp (and Scheme)
> > > >>
> > > >> i'm sure i never saw it (used or mentioned) 25 years ago.
> > > >
> > > > There are many new terms coined for old concepts. Like “capture” for
> > > > “lexical binding”, or “dependency injection” for “callback”.
> > >
> > > Lexical binding does not imply closure/capture.
> >
> >I’ve never seen “capture” used as a general term for closures or for lexical
> >scope in this way; are we sure it’s what was meant?
>
> "Capture" is exactly what was meant.
>
> When a closure references variables from external scopes - that is
> things are that are neither arguments nor locals - it is said to
> "capture" those variables.
Or to “close around” those variables.
Your reference to C++ clarified things, I had and have no interest in using
that language and so I had not known that “capture” is used for the Lisp
“closure” in recent versions of C++ that support it.
> Lisp and Scheme create a copy of the captured variable in the closure
> and compile the code to reference the closure's copy rather than the
> original [which may no longer exist or may not be in scope when the
> closure code finally is executed].
>
> > > C has lexical scoping without capture: the bindings are destroyed
> > > when their associated scope terminates.
>
> And C++ now has closures with control over capture. If you choose not
> to capture, external variables that are referenced must be in scope
> (at their right locations) if and when the closure code is executed.
>
-- ‘As I sat looking up at the Guinness ad, I could never figure out /How your man stayed up on the surfboard after fourteen pints of stout’(C. Moore)