以前我一直在使用"作为循环特征的元素"来迭代未知类型的序列.我刚刚发现Common Lisp的每个实现都没有提供"作为元素",并且我想知道是否有任何干净的方法来使用循环迭代序列.我能够提供的最佳解决方案是将序列强制转换为列表,然后对其进行迭代.
我试图找出如何在调用类似break之类的调试器后逐步执行sbcl和Slime中的代码.我不想从头开始踩踏.例如,如果我有以下代码:
(defun fib (n)
(when (eql n 2)
(break))
(if (<= 0 n 1)
n
(+ (fib (- n 1))
(fib (- n 2)))))
Run Code Online (Sandbox Code Playgroud)
在达到断点之后,我希望能够开始逐步完成代码.我发现这样做的唯一方法是在Slime中查看框架,使用"Return From Frame"(R)功能,然后键入(step(fib 2)).
当我尝试使用"Step"(s)功能而不是实际踩踏时,我得到了这个:
Evaluating call:
(CONTINUE)
With arguments:
[Condition of type STEP-FORM-CONDITION]
Restarts:
0: [STEP-CONTINUE] Resume normal execution
1: [STEP-OUT] Resume stepping after returning from this function
2: [STEP-NEXT] Step over call
3: [STEP-INTO] Step into call
4: [ABORT] Return to sldb level 1.
5: [CONTINUE] Return from BREAK.
--more--
Backtrace:
0: (SWANK:SLDB-STEP 0) …Run Code Online (Sandbox Code Playgroud)