SRFI 225: Dictionaries
Arthur A. Gleckler
(19 Jul 2021 03:53 UTC)
|
Re: SRFI 225: Dictionaries
Dr. Arne Babenhauserheide
(19 Jul 2021 20:02 UTC)
|
Re: SRFI 225: Dictionaries
John Cowan
(20 Jul 2021 16:27 UTC)
|
Re: SRFI 225: Dictionaries
Dr. Arne Babenhauserheide
(21 Jul 2021 18:59 UTC)
|
delimited continuations; was: SRFI 225: Dictionaries
Dr. Arne Babenhauserheide
(19 Jul 2021 20:02 UTC)
|
Re: delimited continuations; was: SRFI 225: Dictionaries
John Cowan
(20 Jul 2021 01:36 UTC)
|
Re: delimited continuations; was: SRFI 225: Dictionaries
Marc Nieper-Wißkirchen
(20 Jul 2021 15:26 UTC)
|
Re: delimited continuations; was: SRFI 225: Dictionaries
John Cowan
(20 Jul 2021 22:42 UTC)
|
Re: delimited continuations; was: SRFI 225: Dictionaries
Marc Nieper-Wißkirchen
(21 Jul 2021 06:03 UTC)
|
Re: delimited continuations; was: SRFI 225: Dictionaries
John Cowan
(21 Jul 2021 21:47 UTC)
|
Re: delimited continuations; was: SRFI 225: Dictionaries Ray Dillinger (21 Jul 2021 23:34 UTC)
|
Re: delimited continuations; was: SRFI 225: Dictionaries
Marc Nieper-Wißkirchen
(22 Jul 2021 07:23 UTC)
|
Re: delimited continuations; was: SRFI 225: Dictionaries
John Cowan
(22 Jul 2021 23:19 UTC)
|
Re: delimited continuations; was: SRFI 225: Dictionaries
Ray Dillinger
(23 Jul 2021 07:14 UTC)
|
Re: delimited continuations; was: SRFI 225: Dictionaries
Marc Nieper-Wißkirchen
(23 Jul 2021 07:34 UTC)
|
No doubt about it, continuations are deeply weird. Procedures may return a different number of times than they are called, in unexpected sequences, or to the call sites where completely different functions were called. That breaks a whole lot of user expectation for those unfamiliar, and It's a lot to take in. I'm of the opinion that continuations are easiest to learn, think about, and use, if they represent a return from some specific user-defined function. I've actually managed to teach some people about continuations this way who didn't seem to get it with any other explanation. Many languages have a "return(value)" form that a routine can use to exit and return control to the site where it was called. So just think of 'return' as a function with the rule that every scope binds a "return" value every time it's entered. If you call it the procedure returns to its call site. In lisp, functions are values, so you can do other things with it too So let's say routine 'bar' passes it to a subroutine or writes it into a structure so it's available to other routines. And whenever some routine calls it in the future (instead of calling the "return" that was bound with its own scope), it will return control to bar's caller. This idea of "return" as a variable bound as a scope is entered, whose value can be accessed, seems more accessible to most. And once they've got the idea of these relatively simple procedure-based "returns", I can explain the rest by giving them a short, simple, but relatively brain-bending definition. (define call-cc (lambda(arg) (arg return))) Honestly, I would find scheme with a "return" variable implicitly bound in each new scope to be more intuitive. "Return" seems nicer than call-cc as syntax, and makes the language expressive enough to define call-cc without resorting to syntax. Bear, Apropos of nothing.