在方案中,``(开始)'的返回值是什么



我知道(begin expr1 expr2 ...)将评估所有表达式并将返回最后一个评估的表达式。

我发现在Chez方案中,它可以使用begin而没有表达式:(begin)。我正在使用Chez计划作为我的学习的一部分。当我在控制台(begin)中写入时,它不会发送语法错误,它就不会显示什么都没有显示void

我的问题是,那将返回什么?

我认为这是通过运行(void)获得的空隙对象。但是,当我测试它时,我意识到它不是。

我正在研究Chez计划,作为我正在参加的编译器课程的一部分,我需要实施可以处理特殊词begin的编译器的一部分。因此,我需要知道为什么这甚至可以返回什么功能。

编辑:

我正在添加有关此主题的链接。我无法完全理解答案。另外,他没有提到返回类型。

我认为这个问题使begin的不同用途混淆了。如果您查看有关begin的R6RS第11.4.7节,则以两种不同的方式使用:1)具有0或更多"形式",在这种情况下,形式在语法上被"剪接"到周围的身体中,就像begin一样在那里(我认为这主要在编写宏时很有用);2)具有1个或以上的表达式,在这种情况下,它按顺序评估表达式并返回最后一个的结果。

当您谈论"返回值"时,您是在谈论(begin ...)作为表达式,但作为表达式(上面的begin的第二种形式),它必须采用一个或多个表达式。一个空的(begin)必须是begin的第一种形式,它只是将" Nothing"(0形式)拼接到周围的身体中,但并未与整个身体的评估分开"评估"。

<</p>

最新更新