freenode/#clasp - IRC Chatlog
Search
19:26:21
Bike
the cando stuff might have a little of an issue in that things will be weird if the "sequence" isn't an actual subclass of SEQUENCE. but SEQUENCE is an abstract class so we can probably fake it if nothing else
21:04:10
drmeister
Martin suggested we limit the depth that rmtree will work on. So I'll restrict it to a flat directory.
23:32:20
Bike
could put an extra slot in standard-generic-function, its invalidated-function. whenever the generic function would be invalidated, its discriminating function is set to its invalidated-function. for most functions this would be the usual (i.e. a function that recomputes and installs the discriminating function). for whatever system functions, it's a function that handles standardly classed arguments (e.g.
0:16:50
Bike
i was thinking of making sequence functions like elt and find and stuff actually generic.
2:08:25
Bike
as you know, i previously tried to inline just about everything, and this resulted in big code size. so i've been cutting back on that
2:08:43
Bike
but, even if we do inline it, there are situations in which it cannot be inlined, and it would be nice to be fast in that situation
2:10:15
Bike
moving to the type-directed "transform" model of expansion means you have a general version that works on anything, and then if you can determine a type you replace it with something more specific
2:10:36
Bike
and in that frame there's no particular problem doing it with a generic function provided whatever "method" is being "inlined" can't be specialized by the programmer
2:10:53
Bike
like you can't subclass VECTOR. so, it's fine to replace (generic-elt vector index) with a more specific call
2:11:40
Bike
anyway, this is all for later. right now i have extended sequences working, but elt/(setf elt)/length don't, and those are pretty important
2:12:26
Bike
probably the thing to do is make the sequence package accessible in C++, so that length can call sequence:length (which is a distinct generic function)
2:14:49
Bike
once that's squared, to make Matter_O work as a sequence you need to define methods on elt, setf elt, make-sequence-like, and if you want DELETE and stuff to work, adjust-sequence
2:15:09
Bike
elt and setf elt looked pretty basic since matters are just Vec0s underneath. dunno about the others
2:16:22
drmeister
Could you say a bit more about the hard part - making the sequence package accessible to c++?
2:16:57
Bike
well basically i want (defun length (sequence) (cond ((listp sequence) ...) ((vectorp sequence) ...) (t (sequence:length sequence))), but in C++
2:17:58
drmeister
Ah - so we can define the SEQUENCE package in C++ - like we do with core, gctools, llvm-sys, clos etc.
2:18:32
drmeister
I see. I can help you with that. It's a bit fussy and I have to figure it out every time. Hang on...
2:20:19
drmeister
https://github.com/clasp-developers/clasp/blob/dev/include/clasp/core/closPackage.fwd.h#L27
2:20:27
drmeister
https://github.com/clasp-developers/clasp/blob/dev/include/clasp/core/closPackage.h#L27
2:21:41
drmeister
Duplicate those three files for sequence or seqsys and call initialize_sequencePackage() from here...
2:23:39
drmeister
No - I never call it. I just put a breakpoint on it. That is old crap we can get rid of.