I don't know if anyone other than us is using PS LOOP, but we use it<div>heavily since our application is very loop-intensive. A continual source</div><div>of bugs is looping over a null collection. Say BAR is null. The following</div>

<div>will crash:</div><div><br></div><div>  <font class="Apple-style-span" face="'courier new', monospace">(ps (loop :for foo :in bar :do (baz foo)))</font></div><div><br></div><div>...because the code expands to include (length bar). This is particularly</div>

<div>annoying if you're running the code in CL as well, where looping over </div><div>a null collection is just fine.</div><div><br></div><div>We've been dealing with this like so:</div><div><br></div><div>  <font class="Apple-style-span" face="'courier new', monospace">(ps (loop :for foo :in (or bar '()) :do (baz foo)))</font></div>

<div><br></div><div>... but this is ugly and more importantly very brittle, since it means</div><div>tracking down every crash case-by-case.</div><div><br></div><div>My question: what does everybody think about making PS LOOP</div>

<div>accept null collections and just do nothing in that case? Something</div><div>about this bothers me. It goes against the philosophy of PS, which</div><div>declines to pretend that JS arrays are Lisp lists (something I fully agree</div>

<div>with). But I'm inclined to make an exception in this case because the </div><div>strict approach is so painful. And this of course raises the</div><div>analogous question for any PS versions of MAPCAR, MAPC, etc.</div>

<div><br></div><div>Daniel</div>