标签: slime

如何在 Windows 7 x64 上开始使用 SLIME 和 Steel Bank Common Lisp 进行编程?

我非常想开始使用这些工具,但似乎我不够聪明:-(

我花了几个小时阅读文档、移动文件夹和编辑配置文件,但我仍然无法启动 Emacs ...

lisp emacs common-lisp slime

4
推荐指数
1
解决办法
3925
查看次数

限制调试输出中的字符串长度

我使用 emacs、slime 和 sbcl。当条件发生时我被扔进调试器时,如何限制输出的大小?我已经弄清楚了*print-length**print-level*,但是对于长字符串或多行字符串该怎么办?说,

(defun monkeys (length)
  "Generate a random string"
  (with-output-to-string (out)
    (dotimes (i length)
      (write-char
       (code-char
        (let ((c (random 27)))
          (if (zerop c)
              (if (zerop (random 5)) 10 32)
              (+ 95 c)))) out))))

(1+ (monkeys 10000)) ; drop into debugger
Run Code Online (Sandbox Code Playgroud)

sbcl common-lisp slime

4
推荐指数
1
解决办法
384
查看次数

为什么 REPL 没有显示函数调用的完整跟踪?

我正在尝试通过《Common Lisp:符号计算的温和介绍》一书来学习 Common Lisp 。此外,我正在使用 SBCL、Emacs 和 Slime。

在第7章的进阶部分,作者建议使用trace功能。这无疑是一个非常有价值的工具。我很高兴看到它起作用了。

然而,显然,我的工具并不能完全像作者介绍的那样工作。

做如下定义后:

(defun find-first-odd (x)
   (find-if #’oddp x))
Run Code Online (Sandbox Code Playgroud)

并在 REPL 上运行:

> (dtrace find-first-odd oddp)
Run Code Online (Sandbox Code Playgroud)

他得到:

> (find-first-odd ’(2 4 6 7 8))
----Enter FIND-FIRST-ODD
| X = (2 4 6 7 8)
| ----Enter ODDP
| | NUMBER = 2
| \--ODDP returned NIL
| ----Enter ODDP
| | NUMBER = 4
| \--ODDP returned NIL
| ----Enter ODDP
| | NUMBER = 6
| \--ODDP …
Run Code Online (Sandbox Code Playgroud)

trace common-lisp slime

4
推荐指数
1
解决办法
68
查看次数

如何探索 Common Lisp 图像

有没有办法探索 Common Lisp 图像的当前状态(即加载的包、可用的符号等)?

我知道命令(apropos "foo"),但我想查看整个图像的当前状态。

有这样的探险家吗?我正在使用 SBCL 和 SLIME(在 Emacs 中)。

emacs common-lisp slime

4
推荐指数
1
解决办法
91
查看次数

使用 swank/slime 在远程 Lisp 中加载本地文件

假设我使用 swank/slime 连接到远程 Lisp。我的本地计算机上的磁盘上或者 emacs 缓冲区中可能有一个数据文件。我想使用远程 Lisp 处理这个文件。

显然,我可以退出 shell 并将文件 scp 到服务器,加载文件,处理它,关闭,删除文件,这样我就不会在服务器上弄乱。

我还可以将文件粘贴到 repl 中:

> (defparameter *my-file* "[paste file here]")
Run Code Online (Sandbox Code Playgroud)

但如果文本中有引号或者文件是二进制的,这就很糟糕了。

这两种选择都很麻烦。

有没有一种好的方法可以让本地 emacs 将文件通过隧道传输到远程 Lisp,以便远程 Lisp 可以将其作为流打开?

我正在想象这样的事情:

> (swank:with-open-client-file (s #p"/path/to/local/file") ... )
Run Code Online (Sandbox Code Playgroud)

编辑:这个例子感觉它可能会在我的本地文件系统中打开一些漏洞。可以在不造成严重安全问题的情况下完成吗?

emacs common-lisp slime

4
推荐指数
1
解决办法
224
查看次数

通过史莱姆重新加载多方法

在使用Slime repl在Emacs中开发时,我无法重新加载多方法.

重新定义defmethod表单工作正常,但如果我更改调度功能,我似乎无法重新加载defmulti表单.我想我专门添加或删除了调度函数参数.

作为一种解决方法,我已经能够ns-unmap使用multimethod var,重新加载defmulti表单,然后重新加载所有defmethod表单.

据推测,这是Clojure实现多方法的一种"限制",即我们牺牲了一些执行速度的动力,但有没有任何成语或开发实践可以帮助解决这个问题?

emacs clojure slime multimethod

3
推荐指数
1
解决办法
258
查看次数

如何避免为常见的lisp项目加载多个asdf文件?

在完成Peter Seibel的" Practical Common Lisp"一书时,我在理解如何与Emacs的SLIME和quicklisp一起处理Common Lisp包系统时遇到了一些困难.他提供的项目具有以下结构:

  • spam.lisp在包中com.gigamonkeys.spam,依赖于另外两个包,cl-ppcrecom.gigamonkeys.pathnames.
  • pathnames.lisp 在包中 com.gigamonkeys.pathnames
  • spam.asd,它描述了com.gigamonkeys.spam包的依赖关系
  • pathnames.asd,它描述了com.gigamonkeys.pathnames包的依赖关系

我目前发现构建最终目标spam.lisp的唯一方法是:

  1. pathnames.asd使用SLIME(C-x C-k)编译并加载文件
  2. com.gigamonkeys.pathname通过(asdf:operate 'asdf:load-op 'spam) 在REPL 键入来加载包
  3. cl-ppcre通过(ql:quickload "cl-ppcre")在REPL 键入来加载包
  4. spam.asd使用SLIME 编译并加载文件
  5. com.gigamonkeys.spam通过(asdf:operate 'asdf:load-op 'spam)在REPL 键入来加载包

这似乎是使用单个文件中定义的函数所需的大量工作(spam.lisp) - 我必须做错事.是否有一些方法可以spam.lisp用更少的命令加载和递归地加载它的依赖项?

common-lisp slime quicklisp

3
推荐指数
1
解决办法
966
查看次数

emacs lisp将无法启动

我正在尝试在emacs中设置slime模式以使用常见的lisp.当我尝试开始粘贴时,M-x slime我收到一条错误消息:

process inferior-lisp not running.

所以,我检查了变量的值inferior-lisp-program,结果证明了这一点"/opt/sbcl/bin/sbcl".sbcl是普通lisp实现的首字母缩写,称为钢银行常见的lisp.请注意,此变量在文件中定义slime.el.因为我没有安装在我的机器上的sbcl(我的机器上甚至不存在以前的目录)(运行os x 10.8.3),这不起作用.

我有clisp实现,它位于目录:/opt/local/bin/.我试图通过以下方式更改变量的值inferior-lisp-program:

(setq inferior-lisp-program '/opt/local/bin/clisp/)

但是,这不起作用,我不知道还有什么可以尝试.

  1. 我怎样才能让劣质lisp运行,从而让粘液起作用?

编辑:这是一些我认为可能有用的额外信息.如果我尝试通过执行M-x run-lisp从emacs中获取以下输出来在emacs中启动常见的lisp :

(progn (load "/Users/s2s2/.emacs.d/slime/swank-loader.lisp" :verbose t) (funcall \
(read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-s\
erver") "/var/folders/wf/yjgymt8j14v2tqwjnny68wq00000gn/T/slime.28222"))          

Can't exec program: /opt/sbcl/bin/sbcl                                            

Process inferior-lisp exited abnormally with code 1                               
Can't exec program: /opt/sbcl/bin/sbcl                                            

Process inferior-lisp exited abnormally with code 1
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!非常感谢所有帮助!

lisp elisp common-lisp slime

3
推荐指数
1
解决办法
2863
查看次数

当emacs锁定时

是否存在关闭emacs中的进程的击键组合?偶尔我在Common Lisp REPL上犯了一个新手错误,我的Emacs锁定了.在Mac上我只是强制退出,因为我无法找到一种方法来控制Emacs.但是如果我能避免它,我宁愿不关闭Emacs.

emacs slime

3
推荐指数
1
解决办法
434
查看次数

SLIME无法从Emacs加载

我最近package-list-packages在Emacs中更新了SLIME .但是,当我尝试使用它时M-x slime,我得到这个:

(progn (load "/home/koz/.emacs.d/elpa/slime-20140913.730/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.3081"))

* 
; loading #P"/home/koz/.emacs.d/elpa/slime-20140913.730/swank-loader.lisp"
;; 
;; Error while compiling /home/koz/.emacs.d/elpa/slime-20140913.730/swank/backend.lisp:
;;   Failed to find the TRUENAME of /home/koz/.emacs.d/elpa/slime-20140913.730/swank/backend.lisp:
;;     No such file or directory
;; Aborting.
;; * 
Run Code Online (Sandbox Code Playgroud)

之后我仍然有一个REPL,但我认为这很奇怪,我想知道发生了什么以及为什么.

emacs sbcl common-lisp slime

3
推荐指数
1
解决办法
2332
查看次数

标签 统计

slime ×10

common-lisp ×8

emacs ×6

lisp ×2

sbcl ×2

clojure ×1

elisp ×1

multimethod ×1

quicklisp ×1

trace ×1