Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 如何用sbcl和slime分析未知的公共Lisp代码_Debugging_Common Lisp_Sbcl - Fatal编程技术网

Debugging 如何用sbcl和slime分析未知的公共Lisp代码

Debugging 如何用sbcl和slime分析未知的公共Lisp代码,debugging,common-lisp,sbcl,Debugging,Common Lisp,Sbcl,如何分析未知的通用lisp源代码以理解它 给定,我有一个函数的公共Lisp源代码。这个虚函数处理任意复杂的数据。现在我想分析这样一个函数 因此,我对工作方法感兴趣,可以分析一些给定的公共lisp源代码。也就是说,通过单步遍历源代码,就像可以在Emacs中使用elisp源代码一样,使用edebug defun 我的工具是slime、sbcl和Emacs 在实际问题的末尾,写下面的内容只是为了更好地概述这个问题的内容 关于背景问题的说明: 我对上述函数的作用不感兴趣,因为 我已经知道基本的公共l

如何分析未知的通用lisp源代码以理解它

给定,我有一个函数的公共Lisp源代码。这个虚函数处理任意复杂的数据。现在我想分析这样一个函数

因此,我对工作方法感兴趣,可以分析一些给定的公共lisp源代码。也就是说,通过单步遍历源代码,就像可以在Emacs中使用elisp源代码一样,使用
edebug defun

我的工具是slime、sbcl和Emacs

在实际问题的末尾,写下面的内容只是为了更好地概述这个问题的内容


关于背景问题的说明:

  • 我对上述函数的作用不感兴趣,因为
  • 我已经知道基本的公共lisp,比如
    if
    dolist
    defun
    和basics。我还知道如何查询CLHS
  • 我可能可以用笔和纸来浏览代码和数据,但为什么呢?当我坐在电脑前
  • 我已经读过了

以下是此类函数的示例,答案不需要参考此函数:

(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代码。我建议使用短语“未知代码”而不是外国代码。