Lisp 什么';口齿不清
比如说, (条件((<21)2)(<12)1)) 值为1。嗯, 但是,我在我的专业书中看到,Lisp 什么';口齿不清,lisp,conditional,conditional-expressions,Lisp,Conditional,Conditional Expressions,比如说, (条件((
(cond(diverge 1)(真0))
是未定义的,如果diverge没有终止的话
口齿不清中的分歧是什么
我不知道
另外,我不知道lisp中的副作用到底是什么。如图所示,
diverse
和ture
将命名为布尔值的变量。如果diverge
为真,则整个表达式的值为1;如果ture
为真,则整个表达式的值为0;如果两者都不为真,则整个表达式的值为nil
由于您没有显示上下文,特别是分歧
和真实
是如何绑定的,因此无法对您的代码片段进行更多说明
也许你的意思是
(cond((分歧1)(真值0))
。然后,diverge
将成为操作员。它没有在通用Lisp标准中定义,因此它很可能来自您的书中的其他地方。如图所示,发散
和真
将命名为布尔值的变量。如果diverge
为真,则整个表达式的值为1;如果ture
为真,则整个表达式的值为0;如果两者都不为真,则整个表达式的值为nil
由于您没有显示上下文,特别是分歧
和真实
是如何绑定的,因此无法对您的代码片段进行更多说明
也许你的意思是
(cond((分歧1)(真值0))
。然后,diverge
将成为操作员。它没有在通用Lisp标准中定义,因此它很可能来自您的书中的其他地方。假设您最初使用的代码是
(cond ((diverge 1) (ture 0)))
当我们假设diverge
是一个发散操作时,该表达式的结果是未定义的(或者更好,也是发散的)
A是一个不会收敛到某个结果的结果,例如无限循环
公共Lisp标准中没有定义分歧(它有什么实际用途?),因此您的书只是通过将分歧计算包装在操作中并对其进行适当命名,从而省略了分歧计算的“实现细节”
请注意,如果假定
发散
是一个符号宏,则原始代码可能会公开相同的行为。假定您最初的意思是
(cond ((diverge 1) (ture 0)))
当我们假设diverge
是一个发散操作时,该表达式的结果是未定义的(或者更好,也是发散的)
A是一个不会收敛到某个结果的结果,例如无限循环
公共Lisp标准中没有定义分歧(它有什么实际用途?),因此您的书只是通过将分歧计算包装在操作中并对其进行适当命名,从而省略了分歧计算的“实现细节”
请注意,如果假定
发散
为符号宏,则原始代码可能会暴露相同的行为。OP的代码可能有效,并且永远不会终止,前提是存在类似于(定义符号宏发散(循环))
的内容;-)啊,是的,符号宏。我想保持低复杂性,但添加了一个注释:)OP的代码可能是有效的,并且永远不会终止,只要有类似于(定义符号宏发散(循环))
的内容;-)啊,是的,符号宏。我想保持低复杂性,但添加了一条注释:)