common-lisp - 简单算术函数中无法访问的代码

标签 common-lisp sbcl unreachable-code

编译后,SBCL 提示 (mod number 10) 在以下位置无法访问

(defun foo (number)
  (cond
    ((> number 10) (mod number 10))
    (t number)))

为什么会这样?

完整的编译器消息:

; in: DEFUN FOO
;     (MOD NUMBER 10)
; --> LET IF AND IF IF PLUSP > 
; ==>
;   NUMBER
; 
; note: deleting unreachable code

最佳答案

查看注释,很可能是 (mod number 10) 扩展为的代码的死代码消除。 在 SBCL 2.0.0 及更高版本上,我无法重现该警告。

又名编译器“错误”

关于common-lisp - 简单算术函数中无法访问的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64901097/

相关文章:

在 defun 中使用 cond 进行 Lisp 评估

garbage-collection - 哈希表疑似SBCL垃圾回收Bug

clojure - 是否有可能通过 SBCL(或其他快速 Lisp)实现 Clojure(或 Clojure 语法)?

c++ - 为什么无法访问的代码在 C++ 中不是错误?

java - for循环之外的语句不会被执行

emacs - 如何在 emacs 中查找 CL 函数定义

functional-programming - 为什么这个 Do Form 无效?

lisp - Quicklisp QUICKLOAD 应该放在我的源代码中的什么位置?无处?

stream - 读取字节忽略 SBCL 灰色流中的 eof-error-p

java - 为什么代码无法访问?