Warum bekomme ich unbound variable Fehler im Schema?
(define (even-odd x)
(if ( ==(% x 2 ) 0) (1) (0)))
wenn ich rufe( gerade-ungerade-5 )
ich bekomme diese Meldung
;Unbound variable: %
;To continue, call RESTART with an option number:
; (RESTART 11) => Specify a value to use instead of %.
; (RESTART 10) => Define % to a given value.
; (RESTART 9) => Return to read-eval-print level 9.
; (RESTART 8) => Return to read-eval-print level 8.
; (RESTART 7) => Return to read-eval-print level 7.
; (RESTART 6) => Return to read-eval-print level 6.
; (RESTART 5) => Return to read-eval-print level 5.
; (RESTART 4) => Return to read-eval-print level 4.
; (RESTART 3) => Return to read-eval-print level 3.
; (RESTART 2) => Return to read-eval-print level 2.
; (RESTART 1) => Return to read-eval-print level 1.
;Debugger starten? (J oder n):
Mache ich etwas falsch ?Auch lassen Sie mich wissen, so wählen Sie text in edwin.
- Die Frage geht davon aus, dass '==' und '%' haben Universelle Bedeutungen, die gleich in allen Sprachen. Aber das ist nicht der Fall.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie ein paar Probleme hier, nämlich die, dass Sie sich irren in den Namen der Prozeduren, die Sie versuchen zu nennen.
%
solltemodulo
==
sollteeqv?
oder, wenn Sie einfach nur versuchen zu sagen, ob eine Zahl gerade oder ungerade ist, eine einfachere und sauberere Weg, dies zu tun ist, verwenden Sie einfach die eingebaute
even?
.oder wenn Sie tatsächlich wollen, dass 0 und 1 als ein Ergebnis, ein sauberer Ausdruck könnte
Müssen Sie weglassen Klammern um die Rückgabe-Werte (1 und 0). Was du geschrieben hast, versucht, um die Verfahren benannt, 1 und 0. Auch der modulo-operator ist nicht
%
, aber benannt ist, sonst wird [überprüfen Sie das Handbuch, das ich es vergessen habe-wahrscheinlichmod
oderrem
].modulo
. Zusätzlich==
ist keine Betreiber -, die Sie verwenden möchteneq?
Dies ist eine idiomatische Schreibweise der
even-odd
Verfahren:Etwas kürzer:
Oder noch besser, verwenden Sie die integrierte in-Verfahren
even?
: