20:45:40Shinmerayes because in the above scenario we have depots that are connected to file-streams.
20:45:56SAL9000so you either need to duplicate the code -- file-stream version vs sequence version
20:46:02SAL9000or provide something that quacks like a file-stream
20:46:32Shinmerayou don't want to do the latter because it's slow and would just lead to more copying.
20:46:55Shinmerahaving two variants is not much more effort and is far more efficient because now you can create sub-entries that just address sub-sequences.
20:47:31SAL9000...would it make sense to provide something that quacks like a sequence but is backed by a file-stream?
20:48:28Shinmerain zippy I have an "io" structure that has its own API and has two implementations for vectors or for streams.
20:48:50SAL9000lowest-common-denominator, ish. that is even cleaner.
20:51:28SAL9000beautiful, although I'm surprised at the mix of defun+etypecase vs defmethod
20:51:31Shinmerait's still not "very fast" because each individual call of these functions will dispatch, rather than dispatching once and then the rest knows.
20:51:54Shinmerathat's one thing in Lisp that's still just not nice to work with.
20:52:06SAL9000the sealable-gf work will help there, right?
20:52:07Shinmerathe defmethod is because size is used elsewhere and I was too lazy to separate them.
20:56:20SAL9000I should stop here tbh before my RSI recovery backslides :<
20:56:27Shinmerabut usually emitting typecase is "good enough" and while slow at compiling, SBCL should eliminate the branching if it knows the variable type.