freenode/#clasp - IRC Chatlog
Search
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.