Scheme 传递布尔函数的正确方法

Scheme 传递布尔函数的正确方法,scheme,lisp,racket,Scheme,Lisp,Racket,我想看看这个计划是否属实,我可以这样做: (lambda (x) (= x #t))) 然而,这给了我一些错误,我退一步使用了下面这样的东西,现在可以使用了: (lambda (x) x) 在类似python的方案中,最接近isTrue函数的是什么: >>> bool(1) True >>> bool(0) False 还有,为什么像=4这样的操作不起作用?=是否仅适用于scheme中的数字类型?为了测试Racket中是否存在错误,我们有错误?谓词,但奇

我想看看这个计划是否属实,我可以这样做:

(lambda (x) (= x #t)))
然而,这给了我一些错误,我退一步使用了下面这样的东西,现在可以使用了:

(lambda (x) x)
在类似python的方案中,最接近isTrue函数的是什么:

>>> bool(1)
True
>>> bool(0)
False

还有,为什么像=4这样的操作不起作用?=是否仅适用于scheme中的数字类型?

为了测试Racket中是否存在错误,我们有错误?谓词,但奇怪的是我们没有一个true?谓词-虽然很容易实现,但:

(define (true? exp)
  (not (false? exp)))
如果你想知道,在Scheme中唯一的假值是f,其他的都被认为是真的。你是对的,=过程专门用于数字;如果需要更一般的等式比较,只需使用equals?。现在可以这样做了:

(equal? 4 #t)
=> #f
显然,4不等于t,但无论如何,4或任何其他数字都被认为是真实的:


你能定义真的吗?不是。你可能会感兴趣!!x很酷,我喜欢那个!值得指出的是,链接问答的另一个答案使用的不是eq?f、 即,与f而不是t进行比较,因为Scheme或Racket中唯一的错误值是f。请注意,Scheme没有false?谓语那是一种骗局。
(if 4 'ok 'nope)
=> 'ok