Ho definito una funzione true?
per l'uso con count in racket/list.Confuso per contratti di racket
(define (true? expr)
(and (boolean? expr) expr #t))
ho notato che potrei fornire argomenti numerici e la mia funzione tornerei molto volentieri #f
.
> (true? 6)
#f
Così, ho pensato di esplorare con un contratto racchetta per rendere gli argomenti non booleani restituiscono un errore in violazione del contratto. Così ho messo questo codice nella parte tope del mio file:
(provide (contract-out
[true? (-> boolean? boolean?)]))
Tuttavia, dopo aver aggiunto il contratto ho ancora ottenere lo stesso comportamento sopra nella REPL racket. Non capisco come potrebbe essere. Cosa mi manca?
Nota che per il tuo particolare contesto, potresti essere in grado di usare 'valori', poiché Racket considera tutto come vero eccetto per' # f'. Es .: '(valore di conteggio '(quante volte #f vero #f #f cose #f))' – dyoo