On Wed, Apr 18, 2012 at 8:56 PM, Andy Wingo <wi...@pobox.com> wrote: > On Wed 18 Apr 2012 17:02, Noah Lavine <noah.b.lav...@gmail.com> writes: > >> The problem is that narrow-stack->vector returns #(). It does this >> because the stack is narrowed to nothing. The narrowing really happens >> in the functions scm_make_stack and narrow_stack, in stacks.c. >> >> The reason it narrows to nothing is the third argument to >> narrow-stack->vector, tag. On my Guile build, tag evaluates to >> '("start-stack"). > > Aaaaah. I was seeing something like this as well but I didn't figure > out why. Thanks for tracking this down! The reason is that the type of > make-prompt-tag changed, and the stack narrowing code didn't adapt > accordingly. We need to change to default to consider generic objects > as eq?-compared prompt tags.
I agree, but you still couldn't use procedures or integers as prompt tags if you wanted make-stack to work, because those are special cases. That's why I thought of just changing the interface to make-stack to specify what you want - it's such a weird restriction that someone could be bitten by it and have a lot of trouble tracking it down. And because an argument can mean three different things, code that uses make-stack is hard to understand (or at least it was for me). What do you think? Noah