<amz3`>my article about the graphdb was retweeted by the creator of Tinkerpop and Gremlin <amz3`>ACTION wonder whether to send a mail to the mailing list <amz3`>does anyone have a threading macro like the one used clojure that allows to write composition left-to-right <sapientech>also #guile, just wrote my first blog post using haunt, and its about guile prompts! sapientech.guile.cc <civodul>wingo: we have "lib/guile/2.0/ccache" in 'search-paths' for Guile but it isn't great because that also adds Guile's own directory in there <civodul>it should have been "/site-ccache", not "/ccache" ***dmiles is now known as dmiles_-
***dmiles_- is now known as dmiles
<OrangeShark>sapientech: in your Makefile.am you have graph/vl-vector listed twice in SOURCES <OrangeShark>sapientech: the develop branch is the one you are working on, right? <paroneayea>wingo: catching up on some email, then either working on spec issues or working on my emacs client for activitypub... <daviid>hello guilers, happy friday indeed! <wingo>paroneayea: btw i think emacs client was the right choice :) <wingo>what's a good data structure to keep a sorted list of (time, x) pairs, with sublinear insertion time? <wingo>if many threads sleep you want to keep them in some data structure to know when to wake them up, how long to poll, etc <wingo>the thing i have now is quadratic <davexunit>I sleep coroutines in an "agenda" taken out of SICP <wingo>then that's quadratic too if you insert to the middle <davexunit>honestly, I've forgotten the details of how it works because I haven't looked at it in years and it's some of my earliest guile code... <davexunit>linear traversal over the list to find the time segment <davexunit>if the time segment doesn't exist, set-cdr! is used to insert it <wingo>a balanced binary trie sounds about right to me <OrangeShark>Linux kernel apparently uses a Red Black tree for one of their schedulers <paroneayea>man it is really hard to keep switching back and forth between lisps <paroneayea>ACTION writing scheme and emacs lisp at the same time <daviid>anyone wrote a red black tree implementation in/for guile? <janneke>paroneayea: surely you must be enjoying closures and lexical-let then! ;-) <davexunit>IIRC mark_weaver verified that it's not a problem <wingo>interestingly for gnu folks, i was invited to give a talk at an llvm event that was co-located with a gnu tools event <wingo>the gnu tools cauldron side of things was much more active and attended <wingo>sometimes we think that llvm is taking over but it is not the case everywhere anyway :) <davexunit>maybe all the llvm people were busy at the apple conference <wingo>heh it's true that apple folks weren't there <wingo>some google people were there but not many <wingo>but i think more google people were there for the gnu side; even as google is investing much more in llvm <wingo>maybe it just says that the llvm event was underattended or something <wingo>i am getting lost in data structures <davexunit>I heard that if you say "ijp" three times into a mirror... <wingo>i need to be able to insert with O(log n) or less, in a map from K to V where K values have an order, and i will remove only from the minimum <wingo>insertions can happen across the domain of K without restriction, it must be O(log n) in queue size in an amortized way <mark_weaver>if the elements of the priority queue are actually pairs, but sorted by their keys. <mark_weaver>okasaki had some good purely-functional priority queues in his book, and elsewhere <wingo>jao loaned me his okasaki book once but i need to get a copy of my own :P <mark_weaver>and some that allow efficient merging of priority queues, e.g. lazy-pairing heaps which are wonderfully simple, but maybe that's more than you need. <wingo>i don't necessarily need something purely functional, these data structures are never mutated from multiple threads at once <mark_weaver>iirc, there's a free library called "Edison" with implementations of his data structures <wingo>mark_weaver: hey do you have a recent 2.2 build? you might enjoy this test case <wingo>need to get out another 2.1.x release soon i guess <mark_weaver>although I'm about to leave for a volunteer shift at MIT's radio station. <wingo>if you try this out, it has a delightfully computersciencey quadratic scalability problem :) <wingo>i don't need a separate notion of priority -- all my keys are sorted and i just remove from one end of the queue <wingo>ijp's heaps are lovely but not balanced afaict <wingo>so if you are always adding onto the end, then sadness <wingo>which is the case for many fibers that (sleep 1) <wingo>of the data structures in pfds, bbtrees seem to be the thing <paroneayea>isn't that a snack food popularized through simpsons-based advertisement in the 1990s <wingo>i can just collapse the key and the priority and that will work for me(?) <wingo>or are the priorities the values? so weird <stis>sort first according to priority and then according to key order sounds ok, just a balancing tree of sorted nodes no? <stis>then the leftmost in the tree has minimum priority <wingo>i guess i was thinking in the reverse way. i need to keep the sorted list of time -> fiber, but in a PSQ the key is the fiber and the priority is the time <wingo>using ijp's priority search queues removes my quadratic badness, it seems