freenode/#sicl - IRC Chatlog
Search
3:26:01
beach
I take it you know about this channel, yes? It is mainly for discussions about the SICL project, including the Cleavir compiler framework, but also for related projects like Eclector, Trucler, Concrete Syntax Tree, etc. And we often discuss general ideas about system implmentation.
3:30:59
beach
Since this channel is logged, I use it as a notebook for ideas. That way, the ideas also get immediate exposure to other people who hang out here.
3:44:23
beach
Yesterday, I implemented enough of a generic version of TYPEP, and I tested it for atomic type descriptors. But satiation crashes on this code, probably because I didn't design satiation for EQL specializers.
3:44:25
beach
But I also have another problem that computing the discriminating function of a generic function with all of its methods completely unspecialized. I think I'll attack that problem first. It should be as simple as just testing for that situation and not calling the code for building the automaton then.
3:47:01
beach
The call history is keyed by a list of classes, one class for each parameter that has at least one method specializing on it. So in this particular case, the key must be the empty list, and the value of the key must be a list of all the methods and an effective-method function computed from those methods.
3:50:52
beach
Oh, and I have this bug that hasn't manifested itself yet, and that Bike pointed out. I test for equality of effective-method functions by comparing the list of applicable methods. But, if there is an accessor method in the bunch, the location of the slot might depend on the argument, so I have to be more conservative about the equality test.
3:51:57
beach
A simple, but wasteful, solution would be to never reuse the effective method function.
3:53:20
beach
That might be a good temporary solution though, to avoid getting tripped by this bug. And then to implement something smarter later on, as an optimization.
6:54:51
beach
userself: So are you writing a byte compiler for Common Lisp or for some other Lisp dialect? Maybe a made-up one?
6:55:57
userself
I haven't really decided yet, i've been working on CLIM more than byte-compilation right now
7:25:04
beach
Fixed the problem of computing a discriminating function when no method specializes on any parameter. One down.
7:48:42
beach
Clearly, if some parameter has only EQL specializers, then the call history will never have any entries. Because if an argument for that parameter is given, and the class of that argument is not the same as any of the classes of any of the EQL-specializer objects, then there is no applicable method for that argument.
7:48:44
beach
And if an argument for that parameter is given that has the class of the any such EQL-specializer object, then, while there is an applicable method for that argument, we don't have the right to cache it in the call history.
7:49:07
beach
So the question is for a parameter that has both EQL specializers and class specializers.
7:50:18
beach
We would have to consider all the subclasses of the class specializers, but only those that are not the same as the class of any EQL-specializer object.
7:52:20
beach
On the other hand, satiation doesn't have to be perfect. It is important only so that the "important" generic functions work. So if it is complicated (due to bootstrapping constraints) to implement this rule, I might just try to skip it.