Ich habe schon eine Weile in Chicken Scheme herumgespielt, aber mir ist etwas Ungewöhnliches aufgefallen. Lassen Sie uns sagen, dass ich die folgende einfache Quelldatei haben:Chicken Scheme: Fehlende Warnungen/Fehlermeldungen beim Laden oder Kompilieren
(define (f x)
(g x))
Es ist offensichtlich, (auf eine menschliche Bohne), dass dies nicht funktionieren kann. Als ich csi
starten und diese Funktion manuell Definition gebe ich die folgende Meldung:
Note: the following toplevel variables are referenced but unbound:
g (in f)
Das ist gut zu wissen! Das Finden von Tippfehlern in größeren Programmen ist gut, bevor Sie sie ausführen. Nun lassen Sie uns csi
wieder starten und versuchen, load
die Datei:
(load "test.scm")
Ausgang:
; loading test.scm ...
Note: the following toplevel variables are referenced but unbound:
g (in f)
Auch gut. Versuchen wir jetzt, csi
mit dieser Datei zu starten!
$ 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>
Uh ... wohin ist die Fehlermeldung gegangen? Warum ist es nicht da? Okay, vielleicht wird es sich beschweren, wenn ich tatsächlich versuche, es zu kompilieren ...
Nein. Selbst wenn ich am Ende der Datei die Zeile (f 2)
anlege (um zu vermeiden, dass die f
-Funktion entfernt wird), bekomme ich immer noch keine beliebige Art von Fehlermeldung oder Warnung.
Warum? Wie kann der Interpreter (oder zumindest das Handbuch load
Teil davon) sofort dieses Problem bemerken, aber der Compiler kann nicht? Lustigerweise gibt es ein -no-warnings
Argument für den Compiler. Wie erwartet, tut es nichts, da es keine Warnungen gibt.
Was fehlt mir? Wie kann ich es reparieren? Kann es behoben werden oder muss ich manuell load
jede einzelne beteiligte Datei manuell in csi
vor dem eigentlichen kompilieren irgendwelche Programme mit einiger Zuversicht?
Danke, das hat funktioniert! – cronotk