小编mal*_*per的帖子

如何使用循环遍历Common Lisp中的序列?

以前我一直在使用"作为循环特征的元素"来迭代未知类型的序列.我刚刚发现Common Lisp的每个实现都没有提供"作为元素",并且我想知道是否有任何干净的方法来使用循环迭代序列.我能够提供的最佳解决方案是将序列强制转换为列表,然后对其进行迭代.

lisp common-lisp

7
推荐指数
1
解决办法
751
查看次数

从调试器中进入sbcl

我试图找出如何在调用类似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)

lisp debugging sbcl common-lisp slime

5
推荐指数
1
解决办法
2065
查看次数

标签 统计

common-lisp ×2

lisp ×2

debugging ×1

sbcl ×1

slime ×1