Ich definierte eine Funktion true?
für die Verwendung mit count in Schläger/Liste.Verwirrt über Racket Verträge
(define (true? expr)
(and (boolean? expr) expr #t))
Ich bemerkte ich es numerische Argumente und meine Funktion glücklich #f
zurückkehren würde bieten könnte.
> (true? 6)
#f
Also, ich dachte, ich würde erkundet einen Schläger Vertrag mit nicht-boolean Argumenten einen Fehler in Vertragsverletzung zu machen. Also habe ich diesen Code auf dem Tope meiner Datei:
(provide (contract-out
[true? (-> boolean? boolean?)]))
jedoch nach Vertrag Zugabe ich immer noch das gleiche Verhalten wie oben im Schläger REPL. Ich verstehe nicht, wie das sein könnte. Was vermisse ich?
Beachten Sie, dass Sie in Ihrem speziellen Kontext "Werte" verwenden können, da Racket alles außer "# f" als wahr behandelt. Zum Beispiel: '(Zählwerte '(wie viele #f wahre #f # f Dinge #f))' – dyoo