我一直在鸡计划玩了一会儿,但我注意到一些不寻常的东西。假设我有以下简单源文件:鸡计划:加载或编译时缺少警告/错误消息
(define (f x)
(g x))
很明显(对于人类bean),这是行不通的。当我启动csi
并手动输入该函数的定义,我得到了以下信息:
Note: the following toplevel variables are referenced but unbound:
g (in f)
这是很好的了解!在运行它们之前,在更大的程序中查找拼写错误是很好的。现在,让我们再次启动csi
并尝试load
文件:
(load "test.scm")
输出:
; loading test.scm ...
Note: the following toplevel variables are referenced but unbound:
g (in f)
也不错。现在,让我们尝试用该文件启动csi
!
$ csi test.scm
CHICKEN
(c) 2008-2015, The CHICKEN Team
(c) 2000-2007, Felix L. Winkelmann
Version 4.10.0 (rev b259631)
linux-unix-gnu-x86-64 [ 64bit manyargs dload ptables ]
compiled 2015-08-04 on yves.more-magic.net (Linux)
; loading test.scm ...
#;1>
呃......错误信息去了哪里?为什么不在那里?好吧,也许它会抱怨,当我真的试图编译它...
$ csc test.scm
$
没有。即使当我将(f 2)
行添加到文件末尾(为了避免f
功能被优化掉),我仍然没有得到任何类型的错误消息或警告。
为什么?解释器(或至少手册load
的一部分)如何立即注意到这个问题,但编译器不能?有趣的是,编译器有一个参数-no-warnings
。正如预期的那样,由于没有警告,它什么都不做。
我错过了什么?我该如何解决它? 可以它是固定的还是我将不得不手动load
手动load
手动csi
在实际编译任何程序之前有一些自信?
谢谢你,工作! – cronotk