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

时间:2016-03-22 02:41:16

标签: list scheme

我有一个名为' ordered'的函数。使用列表调用它,它将返回#t或#f。

我怎样才能检查它在函数外的if语句中返回的值是什么? 现在我有:

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

哪个不起作用.. 我怎么能改写它?

谢谢!

2 个答案:

答案 0 :(得分:4)

要详细说明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"])

此外,如果返回布尔值,则使用?为您的程序名称添加后缀

(define (ordered? list) ...)

这样,它在代码的其他部分更具可读性和易于理解

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

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

答案 1 :(得分:2)

您可以随时使用

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

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