2010/6/11 Mikael <span dir="ltr"><<a href="mailto:mikael.trash@gmail.com">mikael.trash@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>

<div class="gmail_quote"><div class="im">2010/6/11 Álvaro Castro-Castilla <span dir="ltr"><<a href="mailto:alvaro.castro.castilla@gmail.com" target="_blank">alvaro.castro.castilla@gmail.com</a>></span><br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">


<div>Hi,<br></div><div class="im"><div><br></div><div>I can see sometimes these kind of procedures ##car, ##cdr, ##null? etc... in code that has been optimized for Gambit. What is exactly the difference between those and the standard ones?</div>


</div></blockquote><div><br>(declare (safe))<br>
(car x) ; Argument typechecking made<br>

(##car x) ; No argument typechecking made<br>
<br>
(declare (not safe))<br>

(##car x) ; No argument typechecking made<br>

(car x) ; No argument typechecking made<br> </div><div class="im"><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex"><div>And if these ones are faster, why are they defined as separate functions instead of just substituting the standard ones when in (unsafe) compilation?</div>


</blockquote></div><div><br>Substitution is made automatically on (not safe) compilation.<br> <br></div></div></blockquote><div><br></div><div><br>Ah! ok, so it is actually done, but these procedures allow for using those unsafe versions even in "safe" compilation...<br>

<br>Thanks a lot!<br></div><br>