<div dir="ltr"><p dir="ltr">
On May 17, 2015 9:55 PM, "Harvey Stein" <<a href="mailto:hjstein@gmail.com" target="_blank">hjstein@gmail.com</a>> wrote:<br>
><br>
> Consider the following function:<br>
><br>
> (defun afunction (a)<br>
>   (declare (type (simple-array  double-float (*)) a))<br>
>   a)<br>
><br>
> It compiles fine in cl-user, but if I'm in antik-user, I get:<br>
><br>
><br>
> ; in: DEFUN AFUNCTION<br>
> ;     (TYPE (SIMPLE-ARRAY DOUBLE-FLOAT (ANTIK:*)) ANTIK:A)<br>
> ; <br>
> ; caught ERROR:<br>
> ;   bad dimension in array type: *<br>
> ; <br>
> ; compilation unit finished<br>
> ;   caught 1 ERROR condition<br>
><br>
> So, the antik definition of * breaks declarations that use *.<br>
><br>
> Any way to fix this?<br>
></p><p>You have several options. Antik shadows '* (along with other mathematical symbols) and an unfortunate side effect is that it affects other uses of the symbol '* in cl. So, you can just use cl:* (i.e., put the explicit prefix in). That should always work. There is a symbol macro that defines 'antik:@ to cl:*, so using @ should work. I'm not sure if there's a way to unshadow a symbol, but you can do something like <br></p><p>(setf antik::*antik-user-shadow-symbols* (remove '#:* antik::*antik-user-shadow-symbols*))</p><p>and then make a new package using antik:make-user-package, which will have all the use-package and shadowed symbols except *. If you do this, be careful to use antik:* everywhere you mean Antik's multiply, otherwise it will assume cl:*.<br></p><p dir="ltr">Liam</p><p dir="ltr">
> Thanks,<br>
> Harvey<br>
><br>
><br>
><br>
> -- <br>
> Harvey J. Stein<br>
> <a href="mailto:hjstein@gmail.com" target="_blank">hjstein@gmail.com</a><br>
> <a href="http://www.linkedin.com/in/harveyjstein" target="_blank">http://www.linkedin.com/in/harveyjstein</a><br>
> Selected papers and presentations available at: <a href="http://ssrn.com/author=732372" target="_blank">http://ssrn.com/author=732372</a></p><p dir="ltr"><br></p><p dir="ltr"><br>
</p>
</div>