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)
返回的内容?