Compiler bug?
I have a funcion that basically does something like the following:
(defun case-closed(n)
(typecase n
(ratio (/ n 2))
(otherwise
(case n
(0.0 1)
(0.5 2)
(otherwise 'wrong)))))
Now, I did not get the results that I was expecting. The case
statement did not seem to be working.
It seems, though, that I get the correct result if the function is
interpreted as opposed to being compiled:
<COMPILED FUNCTION case-closed>
;(case-closed 1/2) -> 1/4
;(case-closed 0.5) -> WRONG
<INTERPRETED FUNCTION case-closed>
;(case-closed 1/2) -> 1/4
;(case-closed 0.5) -> 2
It seems that if I remove the typecase statement the (case-closed
0.5) gives the expected result both interpreted and compiled.
Regards,
Mika Kuuskankare
Researcher
Department of Doctoral Studies in Musical Performance and Research
Sibelius Academy
Henkilökohtainen postiosoite/Personal post address
PL 342 - PO Box 342
FIN-00121 Helsinki, FINLAND
Tel: +358 (0)40 5415 233
Skype: mkuuskan