Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scheme 在方案中,点不在cons上的含义是什么?为什么有时有效,有时无效_Scheme - Fatal编程技术网

Scheme 在方案中,点不在cons上的含义是什么?为什么有时有效,有时无效

Scheme 在方案中,点不在cons上的含义是什么?为什么有时有效,有时无效,scheme,Scheme,除了cons符号外,点的含义是什么? 据我所知,点只是一个符号。所以我不明白这里的意思: 原因: 但是: 这里的点是什么意思?语法被解析,对于方案读取器'(1.(2)()被解析并创建与'(12)相同的结构。基本上正确的列表是单链接列表,其中最后一个cdr指向空列表 (somefun.(5))对于读者来说与(somefun 5)相同。当源代码转换成数据结构时,解释器将不知道您是编写了其中一个还是另一个。Hovever(somefun.5)不会被解析为只有一个参数的函数,因为参数列表本身就是一个数字

除了cons符号外,点的含义是什么? 据我所知,点只是一个符号。所以我不明白这里的意思:

原因:

但是:


这里的点是什么意思?

语法被解析,对于方案读取器
'(1.(2)()
被解析并创建与
'(12)
相同的结构。基本上正确的列表是单链接列表,其中最后一个
cdr
指向空列表

(somefun.(5))
对于读者来说与
(somefun 5)
相同。当源代码转换成数据结构时,解释器将不知道您是编写了其中一个还是另一个。Hovever
(somefun.5)
不会被解析为只有一个参数的函数,因为参数列表本身就是一个数字。解析器将其解析为数据结构,但负责编译或解释它的方案实现失败。您可以在数据中使用点列表,在rest参数中使用一些语法,如
lambda
,但它非常有限。大多数情况下,在代码中使用点对失败

方案系统将仅以一种方式显示结构。例如,如果您输入
”(1.(2)()
,您将返回
(12)
,因为带有列表或空列表的点
cdr
获得特殊列表可视化。如果您执行了
”(1.(2.3))
它可以开始使用特殊规则,因为
cdr
是一对,但下一个cdr将不会飞行,并以
(12.3)
结束。如果你计算
'(equal?(((a.(b.(c)())('(abc)))
你会得到
(equal?'(abc)'(abc))
,这是因为它是该结构最简单的可视化。作为代码,它们读取相同的结构并计算相同的值

学习计划时最常见的问题是理解列表结构。例如,如何使用
cons
创建
((12)(34))
,以及如何访问
4
。如果你知道它真的是
((1.(2)())((3.(4)())
你会看到4是在播放
cdr
car
cdr
,然后
car
或简化的
(cadadr)((12)(34)))
。可视化工具将省略
cdr
中的点和额外的括号集(如果有)。例如
”((a)。(b))
将变成
((a)b)

> (equal? . 8)
Exception: invalid syntax (equal? . 8)
Type (debug) to enter the debugger.
> (equal? . ((quote . ((a . (b . (c . ()))))) . ('(a b c))))
#t