freenode/#clasp - IRC Chatlog
Search
15:08:18
Bike
ok, i have local calls with &rest working now... no provision for dx-allocating the rest list, though
15:18:43
Bike
the alternate route to cleaning up c-n-m would be optimizing local functions that take &rest but then just apply it
16:21:09
Bike
i guess we could take care of it just by inlining &rest so that it inserts a call to list or something, and then put in a transform for (apply ... (list ...)) => (funcall ... ...)
16:21:36
Bike
or like sbcl does, (apply ... (list ...)) = (multiple-value-call ... (values-list (list ...))), and then (values-list (list ...)) => (values ...)
16:42:00
drmeister
Wait - what? You want to dump the list into the multiple-value-return area? Interesting...
16:43:54
Bike
i don't want to do that. it's just that sbcl converts apply into multiple-value-call so that it only has one unknown-argcount call type to deal with
16:44:45
Bike
(flet ((foo (&rest args) (apply #'bar args))) (foo 1 2 3)). it would be nice to rewrite that as (bar 1 2 3)
16:45:59
Bike
also i'm trying to figure out how sbcl does multiple-value-call with multiple argforms and man i don't get this at all. i'm down in the vops now
16:48:39
Bike
the slightly more practical idea would be having (flet ((call-next-method (&rest args) (apply cont (or args method-args)))) ... (call-next-method) ...) efficiently end up as (... (funcall cont method-args) ...) without all our weird crap about walkers and macrolet