Scheme 方案Cons(第二个语句为#f)输出

Scheme 方案Cons(第二个语句为#f)输出,scheme,output,cons,Scheme,Output,Cons,我在想,如果 (cons (quote (a b c)) #f) 给出输出 (( a b c )) 那么这会产生什么样的输出: (cons (quote (a b c)) #t) ? 谢谢第一个表达式的计算结果不会是((a b c))在大多数口译员中,您的口译员似乎将#f作为一个空列表进行计算: (cons (quote (a b c)) '()) => '((a b c)) 话虽如此,您只是将a#f替换为a#t,标准结果如下所示: (cons (quote (a b c))

我在想,如果

(cons (quote (a b c)) #f)
给出输出

(( a  b  c ))
那么这会产生什么样的输出:

(cons (quote (a b c)) #t)
?

谢谢

第一个表达式的计算结果不会是
((a b c))
在大多数口译员中,您的口译员似乎将
#f
作为一个空列表进行计算:

(cons (quote (a b c)) '())
=> '((a b c))
话虽如此,您只是将a
#f
替换为a
#t
,标准结果如下所示:

(cons (quote (a b c)) #f)
=> '((a b c) . #f)

(cons (quote (a b c)) #t)
=> '((a b c) . #t)
你为什么不在网上试试呢?例如,

第一个表达式的计算结果不会是
((a b c))
在大多数口译员中,似乎您的口译员将
#f
作为一个空列表进行计算:

(cons (quote (a b c)) '())
=> '((a b c))
话虽如此,您只是将a
#f
替换为a
#t
,标准结果如下所示:

(cons (quote (a b c)) #f)
=> '((a b c) . #f)

(cons (quote (a b c)) #t)
=> '((a b c) . #t)
你为什么不在网上试试呢?例如,在CommonLisp中:

* (if '() 'true 'false)
FALSE
* (cons (quote (a b c)) nil)
((A B C))
方案:

> (if '() 'true 'false)
true
回到CommonLisp:

* (if '() 'true 'false)
FALSE
* (cons (quote (a b c)) nil)
((A B C))
CommonLisp:

* (if '() 'true 'false)
FALSE
* (cons (quote (a b c)) nil)
((A B C))
方案:

> (if '() 'true 'false)
true
回到CommonLisp:

* (if '() 'true 'false)
FALSE
* (cons (quote (a b c)) nil)
((A B C))

非常感谢你!我正在用C编写一个Scheme解释器,这是一个输出示例。因此,如果我的解释器将#f作为一个空列表进行评估,这意味着#t没有什么特殊之处,对吗?这意味着两件事:
#t
#f
在构建列表时没有任何特殊之处,并且解释器的评估不正确因为这个表达式应该为false:
(等于?#f'())
。也许您得到的示例输出是错误的?嗯,可能是错误的,但这是我们的任务,所以我无论如何都应该这样做:)@epsilon如果是这样的话,那么您的任务实际上不是Scheme,而是Lisp家族中的其他语言。非常感谢!我正在用C编写一个Scheme解释器,这是一个输出示例。因此,如果我的解释器将#f作为一个空列表进行评估,这意味着#t没有什么特殊之处,对吗?这意味着两件事:
#t
#f
在构建列表时没有任何特殊之处,并且解释器的评估不正确因为这个表达式应该为false:
(等于?#f'())
。也许您得到的示例输出是错误的?嗯,可能是错误的,但这是我们的任务,所以我应该这样做:)@epsilon如果是这样的话,那么您的任务实际上不是Scheme,而是Lisp家族中的其他语言。也许您混淆了CommonLisp中的
'()
NIL
,因为它们都是“false”。在Scheme中,
“()
不是布尔值。是否有某种原因使您无法在Scheme提示符中键入该值,并查看
(cons'(a b c)#f)
返回的内容?也许您将
”()
NIL混淆为CommonLisp中的“false”。在Scheme
中,()
不是布尔值。是否有某种原因使您无法在Scheme提示符中键入该值,并查看
(cons'(abc)#f)
返回的内容?