libera/#sicl - IRC Chatlog
Search
11:01:16
scymtym
beach: you are right. the current behavior is overeager. something like 1 that cannot be a type specifier is parsed as a SUBSIDIARY-ITEM, but symbols and conses are parsed as atomic and compound type specifiers respectively
11:03:01
scymtym
this should probably work like forms. for forms, only the outermost form is parsed and nested expressions in evaluated positions are marked as unparsed so that the client can interleave environment-dependent processing with recursive parsing
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".