beneroth changed the topic of #picolisp to: PicoLisp language | The scalpel of software development | Channel Log: https://libera.irclog.whitequark.org/picolisp | Check www.picolisp.com for more information
rob_w has joined #picolisp
<tankf33der> morning all
<tankf33der> taleon: did you solve your openbsd issue ?
msavoritias has joined #picolisp
rob_w has quit [Remote host closed the connection]
<tankf33der> abu[7]: alarma
<tankf33der> I've created another coroutine monster; pil21 is hanging.
<abu[7]> Uh
<abu[7]> Good! I'm out. Will look later.
msavoritias has quit [Ping timeout: 268 seconds]
<tankf33der> freebsd - hang, linux - coredump
<abu[7]> Must watch football :)
<tankf33der> :)
<abu[7]> (catch '("") (co 'a (co 'b (throw (yield)))))
<abu[7]> is enough
<abu[7]> cause (yield (throw is never yielded
<abu[7]> then (co 'b T)
<abu[7]> Will debug later
msavoritias has joined #picolisp
msavoritias has quit [Remote host closed the connection]
<abu[7]> While watching soccer, I thought about it :) I know what goes wrong, an there should be an error message. Must find out why not.
<tankf33der> lucky me
<abu[7]> 2:0 for DE
<abu[7]> Too tired today. The problem is that if you call (catch T (co 'a (co 'b (throw (yield)))))
<abu[7]> then 'a' is finished
<abu[7]> because 'b' yielded back to 'a' and 'a' falls off the end
<abu[7]> When then (co 'b T) is called, 'b' continues after the 'yield' and thus 'throw's
<abu[7]> So here we should see "NIL -- Tag not found""NIL -- Tag not found"
<abu[7]> But instead it crashes
<abu[7]> So '
<abu[7]> 'yield' did not properly maintain the stacks
<abu[7]> Btw, (catch T (co 'a (co 'b (throw (yield))))) and then (co 'b T) is the wrong call
<abu[7]> Correct would be (co 'a (co 'b (throw (yield)))) and then (catch T (co 'b T))
<abu[7]> because the throw happens now
<abu[7]> But as the wrong call should behave well too (tag error), I'll try to fix tomorrow
<tankf33der> Ok. Good
<beneroth> <3