freenode/#sicl - IRC Chatlog
Search
8:26:48
beach
OK, so generic functions in environment E2 are host generic functions. Functions that operate on these generic functions should be defined in E1, because that's the pattern I have decided upon (for reasons I won't go into here).
8:27:43
beach
However, I import ADD-METHOD from the host into E2, even though ADD-METHOD is at the same level as an accessor. I should really import it into E1.
8:28:40
beach
Generic function in E3 are bridge generic functions. The host doesn't know what to do with those, so I define my own way of executing them. The SICL technique.
8:29:48
beach
But, because ADD-METHOD was taken in E2, I define ADD-METHOD for bridge generic functions in E3. This is a mistake, because it needs to call accessors defined in E2.
8:30:45
beach
If I fix this problem, I should be able to use the production ADD-METHOD, provided I define it in E2.
8:31:12
beach
So, why do I import the host ADD-METHOD into E2? Probably because it makes it easier to define DEFMETHOD in E2.
8:32:43
beach
So the mission for today (and maybe more) is to figure out how I can define DEFMETHOD in E2 so that it invokes ADD-METHOD in E1, thereby making it possible to define SICL ADD-METHOD in E2 to be invoked by DEFMETHOD in E3.
8:33:43
beach
Once I understand this stuff, I should be able to write it down. Hopefully in a way that others can understand as well.
8:34:48
beach
By the way, part of why I am blabbing so much here is that this channel is logged. So I should be able to consult the logs to understand what I was thinking at the time, given that there is no way I will remember it.
8:52:57
beach
In the SICL MOP, I define this additional function (not specified by the AMOP) named ENSURE-METHOD.
8:55:21
beach
So the definition of ENSURE-METHOD needs to move one step down. The one currently in E2 should move to E1, and the one currently in E3 should move to E2.
9:03:39
beach
The only problem with that idea is that, in the next phase, I need to load it into E2 and move the definition into E3, but then I will clobber the definition in E2.
9:19:03
beach
I think I am on the right track. I think I just identified some more specialized code that I can eliminate if I do it this way.
9:27:43
beach
Bad news: It is currently a mess. Good news: When I clean it up, it will be much prettier.