libera/#sicl - IRC Chatlog
Search
11:20:58
beach
I am working on Predicament, a library that implements the condition system. And I need to macroexpand things like HANDLER-BIND that have type specifiers.
11:22:56
beach
So I am working on several things in parallel. Iconoclast is one, and I add an AST when I need it for some macro.
11:24:08
scymtym
that reminds me. i have added a few additional standard macros. i should checked whether i have already pushed those changes
11:25:10
beach
Then I am working on Common-macros, a library that will have portable macros to use for the initial phase of SICL bootstrapping.
11:25:46
beach
Also, Constrictor, which is a library that implements the Conses dictionary, or most of it.
11:26:21
beach
And finally, Parcl for the package system. All these new ones will use Iconoclast, except perhaps Constrictor.
11:27:56
beach
There are not many complex macros in the Conses dictionary. But for the others, there are plenty of them.
13:42:28
beach
I see phoe clusters not only handlers (which is required by the standard) but also restarts. But I don't recall seeing any requirement that the restarts defined in a particular form should be treated as a group by some operator. Did I miss that?
13:43:32
beach
So if I am right, the restarts defined in a particular form could just be prepended to a unique list of restarts. No?
13:53:00
jackdaniel
it is only useful in a sense that unwinding the restart-bind is just popping from the list, but that may be done other way
13:54:20
beach
No problem. Well, the list wouldn't be popped anyway. It would be something like (let ((*active-restarts* (append new-restarts *active-restarts*))) ...) so it would be automatically "popped" by the mechanism for special variables.
14:17:59
scymtym
maybe the clustering is intended for satisfying this requirement: "A restart function can itself invoke any other restart that was active at the time of establishment of the restart of which the function is part.". if i understand correctly, a restart function cannot invoke a different restart that is established by the same form (including "its own" restart)
14:18:37
scymtym
but i'm probably missing something since all implementations i tried do not behave that way
14:21:45
beach
I read it as: A restart function of a restart R can itself invoke other restarts when R was established, and that includes the ones following R in the same for as the one that establishes R.
14:22:24
beach
I read it as: A restart function of a restart R can itself invoke other restarts that were active when R was established, and that includes the ones following R in the same for as the one that establishes R.
14:24:58
scymtym
i guess my interpretation would have been phrased as "any other restart that /had already been/ active at the time of establishment" or similar
14:25:41
jackdaniel
(I was looking for that exact quote earlier; but I don't know what to make of it at this moment)
14:26:22
scymtym
i could see my interpretation as a reason for needing clusters but i think my interpretation is probably wrong
14:26:36
beach
I guess it's a question of whether RESTART-BIND establishes all restarts at the same time, or one at a time.
14:27:04
jackdaniel
if we draw a parallel between handle-bind and restart-bind, then your interpretation is additionally supported
14:28:19
beach
Indeed, except that I didn't find the corresponding phrase in the case of restarts as is there in the case of handlers.
14:30:39
scymtym
i can think of one more reason for using clusters: it could be an implementation detail since establishing multiple restarts requires less consing that way: (let ((*restart-clusters* (cons PRECOMPUTED-LIST-OF-CLUSTERS *restart-clusters*))) …) allocates only one cons
14:33:01
beach
Anyway, whatever I choose is going to be easy to change later on. But thanks for the discussion.
14:34:14
beach
I would like to see some statistics, or at least some hunches as to the typical number of active handlers and restarts in a typical situation. My guess is "relatively few".