Common Lisp: удаление недоступного кода - PullRequest
2 голосов
/ 14 октября 2010

Это легко.

(let ((x))
(if (typep x 'null) "a" "b"))

сгенерировать предупреждение о недоступном удалении кода. Предположительно, компилятор был достаточно умен, чтобы понять, что он выполняется только один раз, и тип всегда будет нулевым. Обычно я не пишу этот код, но в этом случае я просто не хочу, чтобы уведомление об удалении кода было в моем выводе. Как я могу закрыть SBCL об этом конкретном предупреждении? Как примечание, я также не смог найти правильный синтаксис, чтобы сказать sbcl установить безопасность на 0, чтобы я мог переполнить целое число (в образовательном плане) ... Возможно, связано?

Спасибо, Conrad

1 Ответ

4 голосов
/ 14 октября 2010

Обертка любого компилируемого кода в привязке обработчика с обработчиком для sb-ext:compiler-note, который обрабатывается с помощью muffle-warning.См. Также http://www.sbcl.org/manual/#Controlling-Verbosity

SBCL имеет модульную арифметику, поэтому вы можете получить очень быструю арифметику, объявив типы переменных и обернув операции в (logand mask (+ x y)), где маска - #xFFFF или #xFFFFFFFF или что-то еще.Смотри также http://www.sbcl.org/manual/#Modular-arithmetic

...