在 SBCL 中使用步进器的简单示例

Posted

技术标签:

【中文标题】在 SBCL 中使用步进器的简单示例【英文标题】:A simple example of using the stepper in SBCL 【发布时间】:2012-01-26 20:57:14 【问题描述】:

使用 LispWorks 步进器进行计算相当直观,但我无法在 SBCL 中弄清楚。有人可以给我一个分步示例,说明如何在 REPL 中在一些简单的功能上使用 SBCL 步进器吗?谢谢。

【问题讨论】:

【参考方案1】:
* (proclaim '(optimize (debug 3)))

* (defun foo (a b) (* (+ a b) b))

FOO
* (step (foo 1 2))
; Evaluating call:
;   (FOO 1 2)
; With arguments:
;   1
;   2

1] step
; Evaluating call:
;   (+ A B)
; With unknown arguments

0] step
; Evaluating call:
;   (* (+ A B) B)
; With unknown arguments

0] step
; (FOO 1 2) => 6

命令:

Stepping:
  START Selects the CONTINUE restart if one exists and starts
        single-stepping. Single stepping affects only code
        compiled with under high DEBUG optimization quality.
        See User Manual for details.
  STEP  Steps into the current form.
  NEXT  Steps over the current form.
  OUT   Stops stepping temporarily, but resumes it when the topmost
        frame that was stepped into returns.
  STOP  Stops single-stepping.

请参阅 SBCL 手册:single stepping。

【讨论】:

以上是关于在 SBCL 中使用步进器的简单示例的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中将文本+图标作为步进器的步骤标题

是否可以在不创建特殊迭代器的情况下每次迭代步进不同的量?

R (e1071) 中的朴素贝叶斯分类器的行为不符合预期(简单示例)

[MySQL5.6] 一个简单的optimizer_trace示例

流式传输迭代器的最简单方法

第五周作业