检查#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 ...])
我有一个名为 '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 ...])