Debugging 如何用sbcl和slime分析未知的公共Lisp代码
如何分析未知的通用lisp源代码以理解它 给定,我有一个函数的公共Lisp源代码。这个虚函数处理任意复杂的数据。现在我想分析这样一个函数 因此,我对工作方法感兴趣,可以分析一些给定的公共lisp源代码。也就是说,通过单步遍历源代码,就像可以在Emacs中使用elisp源代码一样,使用Debugging 如何用sbcl和slime分析未知的公共Lisp代码,debugging,common-lisp,sbcl,Debugging,Common Lisp,Sbcl,如何分析未知的通用lisp源代码以理解它 给定,我有一个函数的公共Lisp源代码。这个虚函数处理任意复杂的数据。现在我想分析这样一个函数 因此,我对工作方法感兴趣,可以分析一些给定的公共lisp源代码。也就是说,通过单步遍历源代码,就像可以在Emacs中使用elisp源代码一样,使用edebug defun 我的工具是slime、sbcl和Emacs 在实际问题的末尾,写下面的内容只是为了更好地概述这个问题的内容 关于背景问题的说明: 我对上述函数的作用不感兴趣,因为 我已经知道基本的公共l
edebug defun
我的工具是slime、sbcl和Emacs 在实际问题的末尾,写下面的内容只是为了更好地概述这个问题的内容
关于背景问题的说明:
- 我对上述函数的作用不感兴趣,因为
- 我已经知道基本的公共lisp,比如
,if
,dolist
和basics。我还知道如何查询CLHSdefun
- 我可能可以用笔和纸来浏览代码和数据,但为什么呢?当我坐在电脑前
- 我已经读过了
以下是此类函数的示例,答案不需要参考此函数:
(defun wins (grid color)
(declare (optimize (speed 0)
(debug 3)))
(dolist (phase *phase*)
(dolist (start (car phase))
(if (= (* 4 color)
(reduce #'+ (cadr phase)
:key
(lambda (offset)
(aref grid (+ start offset)))))
(return-from wins t)))))
给定上述代码,对我来说,何时处理任意数据的哪些部分以及如何处理是一个谜。看到它发挥作用可能是有益的
在这个特殊的例子中,我尝试使用(步骤(wins…)
,但这仅限于(*4色)
、(减少…
)和(*start offset)
,这还不足以(对我)理解这个函数
而且(跟踪胜利)
也没有多大帮助
我从一本通用的lisp教学书中获取了这个函数,该书已经对它进行了解释。因此没有必要解释这个函数。mmh…你的问题更适合reddit的/r/common_lisp或其他论坛。你可以通过
documentation
@Ehvince以编程方式搜索符号和函数的文档。我为什么要使用它如果没有文档,我想知道函数是如何处理给定数据的?外国通用lisp代码
也可以指处理与其他语言接口的lisp代码。我建议使用短语“未知代码”而不是外国代码。