球拍中的布尔值

Boolean in Racket

我运行考试,总有一个考试过不了。我尝试了每一种排列。有没有更简单的方法,比如尝试不 returning 一个简单的布尔值,也许 return 取决于输入?

这是我的代码:

(check-expect (same? #true #true) #true)
(check-expect (same? #false #false) #true)
(check-expect (same? #true #false) #false)

(define (same? b1 b2)
 (cond
    [ b1 #t ]
    [ b2 #f ]
    [else #t]))

那个same?定义是错误的。要通过所有测试用例,您可以使用 equal?:

(define same? equal?) ; <-- some languages, e.g. BSL don't allow this way

(define (same? b1 b2)
  (equal? b1 b2))

或者,如果你不被允许使用equal?,你可以这样写:

(define (same? b1 b2)
  (if b1 (if b2 #true #false)
      (if b2 #false #true)))

(在这个解决方案中,我希望 b1b2 是布尔值,没有别的。)