<paroneayea>I don't suppose we have any memory profiling tools I don't know about...? ***do is now known as w1gz
***random-nickname is now known as random-nick
<dsmith-work>paroneayea: By "properly tail recursive" are you asking if a recursive call grows stack or not? <dsmith-work>paroneayea: Guile will always make a jump when a call is in tail position. <paroneayea>dsmith-work: yeah, was just checking that I wasn't screwed over by some crazy macrology or something. I did ,optimize to see what it was going to be <paroneayea>and that confirmed, the call was in the tail position. Turned out that wasn't the bug. <paroneayea>wingo: got a minute? I'm trying to read channels.scm and I'm a bit confused by the (maybe-commit) sub-procedure in put-operation <paroneayea>the 'W handler does a (maybe-commit) but it doesn't necessarily succeed <paroneayea>just trying to understand... so is this basically where it *tries* to remove an item from the queue, but maybe doesn't succeed <paroneayea>ok, wait I think I get it... we want to do it at the enqueue! stage. <amz3`>nice to see some interaction between guilers <amz3`>instead of everyone working on their own speck <paroneayea>amz3`: yeah! Fibers and 8sync are finally coming together, arm in arm, at last :) <paroneayea>wingo: where'd this functional dequeue design come from? <davexunit>okazaki's data structure, but ijp's scheme implementation I think? <paroneayea>you reverse the tail of the list when you dequeue and move it to the head <OrangeShark>paroneayea: oh ya, that one I think is in Okazaki's functional data structure paper <ijp>The queue version of that is probably the best functional queue under normal access patterns, but I've always been more sceptical of the deque version <ijp>it's also roughly how you do a list zipper <ijp>which gets used in minsky's proof that PDA with 2 stacks are equivalent to turing machines <ijp>I'd forgotten all about mono. Weird, because it / de icaza used to be really controversial