让我们说我在多个mapcar函数中,并且我已经找到了成功的终止条件。我想停止执行其余的代码。
在java中,我可以做System.exit(0);
lisp是否有类似的东西?
答案 0 :(得分:14)
MAPCAR
对迭代数据并在找到成功的终止条件时退出无效。
Common Lisp提供MAPC
,类似于MAPCAR
,但不会累积结果。另请参见函数MAP
。
此外,Common Lisp提供了许多功能,例如FIND
,FIND-IF
,FIND-IF-NOT
,......
对于流量控制,Common Lisp有RETURN
,RETURN-FROM
,CATCH
和THROW
以及其他许多。
答案 1 :(得分:5)
在像Lisp这样的面向REPL的环境中,等效于System.exit()
并没有多大意义;它可能存在,但它不会让你的函数返回一个值。
(return-from)
可以做你正在寻找的东西。
答案 2 :(得分:1)
在这种情况下可能不是合适的解决方案(使用Dougal的答案从嵌套循环/调用返回),但为了完整性,System.exit(0);
的字面等价物将类似于Portable Exit。
正如您所看到的,它在各实现之间完全不同,因为它不是标准的一部分。