检查#t 的等效性? (方案)

Checking equivalency of #t? (Scheme)

我有一个名为 'ordered' 的函数。用列表调用它,它 returns #t 或 #f.

如何在函数外的 if 语句中检查它 returns 的值? 现在我有:

(if (eqv? (ordered (car list)) '#t ))

这真的行不通.. 我该如何重写它?

谢谢!

您可以随时使用

(if (ordered (car lst))
    ...)

在 Scheme 中,唯一的错误值是 #f。其他一切都被认为是真实的。

要详细说明 Chris 的回答,您不必明确检查 #t 是否相等。您可以直接在您的 if

中使用程序申请的结果
(if (ordered (car list))
    "ordered returned true"
    "ordered returned non-true")

或在cond

(cond [(ordered (car list)) "ordered returned true"]
      [else "ordered returned non-true"])

此外,如果它 returns 一个布尔值

,则通常在您的过程名称后缀 ?
(define (ordered? list) ...)

这样一来,代码的其他部分就更易读也更容易理解了

(if (ordered? (car list)) ...)

(cond [(ordered? (car list)) ...]
      [else ...])