Zdefiniowałem funkcję true?
do użytku z count w rakiecie/liście.Mylić o umów rakietowych
(define (true? expr)
(and (boolean? expr) expr #t))
zauważyłem mogę dostarczyć argumentów liczbowych i moja funkcja chęcią powrócimy #f
.
> (true? 6)
#f
Tak, myślałem, że chciałbym zbadać stosując umowę rakietę, aby non-logiczne o argumenty zwróci błąd z naruszeniem umowy. Więc umieścić ten kod na Tope mojego pliku:
(provide (contract-out
[true? (-> boolean? boolean?)]))
Jednak po dodaniu kontrakt ja wciąż takie samo zachowanie jak wyżej w REPL rakieta. Nie rozumiem, jak to możliwe. czego mi brakuje?
Pamiętaj, że w twoim konkretnym kontekście możesz użyć "wartości", ponieważ Racket traktuje wszystko jako prawdziwe, z wyjątkiem '# f'. Np .: '(count count '(ile #f true #f #f things #f))' – dyoo