什么是System.exit(0)的lisp等价物?

时间:2011-12-04 23:45:25

标签: lisp common-lisp

让我们说我在多个mapcar函数中,并且我已经找到了成功的终止条件。我想停止执行其余的代码。

在java中,我可以做System.exit(0);

lisp是否有类似的东西?

3 个答案:

答案 0 :(得分:14)

MAPCAR对迭代数据并在找到成功的终止条件时退出无效。

Common Lisp提供MAPC,类似于MAPCAR,但不会累积结果。另请参见函数MAP

此外,Common Lisp提供了许多功能,例如FINDFIND-IFFIND-IF-NOT,......

对于流量控制,Common Lisp有RETURNRETURN-FROMCATCHTHROW以及其他许多。

答案 1 :(得分:5)

在像Lisp这样的面向REPL的环境中,等效于System.exit()并没有多大意义;它可能存在,但它不会让你的函数返回一个值。

如果你的代码结构合理,

(return-from)可以做你正在寻找的东西。

答案 2 :(得分:1)

在这种情况下可能不是合适的解决方案(使用Dougal的答案从嵌套循环/调用返回),但为了完整性,System.exit(0);的字面等价物将类似于Portable Exit

正如您所看到的,它在各实现之间完全不同,因为它不是标准的一部分。