<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Mar 9, 2020 at 12:57 AM Adam <<a href="mailto:adam.mlmb@gmail.com">adam.mlmb@gmail.com</a>> wrote:<br></div><div dir="ltr" class="gmail_attr"><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"> * I wildguess a condition that makes it easier for CL to accommodate this syntax without incredible overhead, is the fact that they do not have first class continuations (but only escape continuations which mean N-step procedure return), so they don't have the question "which dynamic variable assignment should apply in which continuation".<br></div></div></div></div></div></blockquote><div><br></div><div>That's correct.  The traditional implementations are:</div><div><br></div><div>"deep binding": a global alist holding all the bindings of all dynamic variables which is pushed when a let or lambda that binds dynamic variables is entered, and that is popped when it exits </div><div><br></div><div>"shallow binding": either a similar setup but with the current value cached in the symbol representing the variable at run time, or a setup with one alist per variable.</div><div><br></div><div>Neither of these methods works correctly in the presence of call/cc or threads.  Threads are only semi-standardized in CL: <<a href="https://trac.common-lisp.net/bordeaux-threads/wiki/ApiDocumentation">https://trac.common-lisp.net/bordeaux-threads/wiki/ApiDocumentation</a>>. If you use this library, you still have to deal with either the "reinitialize local bindings" or the "copy local bindings" strategy of the underlying application: the "share bindings with the parent thread" strategy is hidden (all per #lisp).</div><div><br></div><div><br></div><div><br></div><div>John Cowan          <a href="http://vrici.lojban.org/~cowan">http://vrici.lojban.org/~cowan</a>        <a href="mailto:cowan@ccil.org">cowan@ccil.org</a><br>It's like if you meet an really old, really rich guy covered in liver<br>spots and breathing with an oxygen tank, and you say, "I want to be<br>rich, too, so I'm going to start walking with a cane and I'm going to<br>act crotchety and I'm going to get liver disease. --Wil Shipley<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left:1px solid rgb(204,204,204)">
</blockquote></div></div>
</blockquote></div></div></div></div>
</blockquote></div></div></div></div></div>
</blockquote></div></div>