标签: sbcl

常见的lisp emacs上的自动缩进+ windows中的slime + sbcl

我定义我的函数等时,我不能在emacs + slime + sbcl上使用自动缩进功能.

我的.emacs文件配置是这样的:

(setq inferior-lisp-program
"D:/emacs/sbcl_1.0.37/sbcl.exe"
      lisp-indent-function 'common-lisp-indent-function
      slime-complete-symbol-function 'slime-fuzzy-complete-symbol
      slime-startup-animation nil
      slime-enable-evaluate-in-emacs t
      slime-log-events t
      slime-outline-mode-in-events-buffer nil
      slime-repl-return-behaviour :send-only-if-after-complete
      slime-autodoc-use-multiline-p t
      slime-highlight-compiler-notes t)

(add-to-list 'load-path
 "d:/emacs/site-lisp/slime")  ; your SLIME directory
(require 'slime)
(slime-setup)
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗?

lisp windows sbcl common-lisp slime

10
推荐指数
1
解决办法
2386
查看次数

"你的小猫等待"来自哪里?

如果您运行SBCL(至少在Windows上,我在家中使用CLISP),您会收到消息"您的死小猫等待".我怀疑这与某种形式的内幕笑话有关(比如Super Cow Powers).我已经尝试了谷歌搜索,我发现没有什么特别有用的(我想它在其他地方提到的'网络是一些,如果不是很多,使用).

如果这看起来更像是SuperUser或ServerFault问题,请告诉我,我会在他们的论坛上提问.


更新:

似乎这个引用的起源是由Christopher Rhodes 提交到原始来源的1.54版本(感谢Daniel A. White找到了这个名字).我不确定这是否有用,但它是一个额外的途径来接近这个查询.

windows sbcl

10
推荐指数
1
解决办法
1097
查看次数

Common Lisp有类似java的Set Interface /实现类吗?

我需要像这样,元素的集合不包含任何元素的副本.Common Lisp,特别是SBCL,有这样的东西吗?

lisp java sbcl set

9
推荐指数
5
解决办法
3522
查看次数

SBCL初始化文件

我想知道我应该在哪里保存.sbclrc文件.我尝试将其保存在我的.sbcl文件夹中,但它似乎没有工作.我正在使用Windows XP和Emacs版本23.

我正在尝试设置asdf-install,这就是为什么我在使用初始化文件.

谢谢你的时间.

lisp emacs sbcl

9
推荐指数
1
解决办法
1198
查看次数

帮助使用Lisp调试器

我正在尝试理解如何解释Lisp调试器的输出和使用.

我有一个非常简单的Backtrace来评估我的函数,但我似乎无法弄清楚如何使用它来找出我的函数中发生异常的Lisp'形式'.

我很欣赏任何关于我应该做什么的线索,找到我的代码中错误产生的地方.

另外 - 为什么第二帧显示为"没有可用于帧的调试信息"?

我用调试器和repl附加了一个屏幕截图(我还在下面包含了我的函数 - 我知道这是非常错误的 - 但我只是对学习正确使用调试器感兴趣).另外,我在第一帧上点击'v'去了源,但这导致了repl下面的错误.(编辑 - 通过下载并将其复制到正确的路径来修复缺少的源代码问题)

替代文字

(可怕的功能 - 请不要评论!)

(defun myquicksort2 (lst)
  (if (eql 1 (length lst))
      lst
      (let ((mid (middle lst)))
    (do ((i 0 (+ i 1)))
        ((>= i mid) (append (myquicksort2 (subseq lst 0 mid))
                  (myquicksort2 (subseq lst mid (length lst)))))
      (if (> (ltval i lst) (nth 100 lst))
          (let ((tmp (ltval i lst)))
        (setf (nth i lst) (gtval i lst))
        (setf (nth (- (- (length lst) i) 1) lst)  tmp))))))) …
Run Code Online (Sandbox Code Playgroud)

lisp sbcl common-lisp

9
推荐指数
1
解决办法
1286
查看次数

如何更改SBCL的当前目录?

这是容易改变CLISP的当前工作目录:

>cat ~/.clisprc.lisp 
;;; The following lines added by ql:add-to-init-file:
#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname))))
  (when (probe-file quicklisp-init)
  (load quicklisp-init)))

(cd "/media/E/www/qachina/db/doc/money")
(load "money")
Run Code Online (Sandbox Code Playgroud)

但是,似乎cd在SBCL中没有类似的功能.如何用SBCL完成这项工作?

clisp sbcl common-lisp

9
推荐指数
5
解决办法
6935
查看次数

对SBCL中的``ql:quickload``和可执行脚本感到困惑

我一直在尝试在我的可执行脚本中使用Quicklisp包.一个(平凡的)工作示例是:

#!/usr/bin/sbcl --script

(eval-when (:compile-toplevel :load-toplevel :execute)
  (ql:quickload "lisp-unit")) ;as explained by another question

(defpackage :test
  (:use :cl :lisp-unit))

(format t "This is a test.")
Run Code Online (Sandbox Code Playgroud)

chmod使用此代码(调用test.lisp)的文件后,我尝试执行它.但是,我收到以下错误消息:

Unhandled SB-C::INPUT-ERROR-IN-LOAD in thread #<SB-THREAD:THREAD
                                            "main thread" RUNNING
                                             {1002C16923}>:
  READ error during LOAD:

    Package QL does not exist.

      Line: 4, Column: 15, File-Position: 95

      Stream: #<SB-SYS:FD-STREAM
            for "file /home/koz/Documents/Programming/CL/trees/test.lisp"
            {1002C19A93}>

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1002C16923}>
0: ((LAMBDA NIL :IN SB-DEBUG::FUNCALL-WITH-DEBUG-IO-SYNTAX))
1: (SB-IMPL::CALL-WITH-SANE-IO-SYNTAX #<CLOSURE (LAMBDA NIL :IN SB-DEBUG::FUNCALL-WITH-DEBUG-IO-SYNTAX) {1002C2498B}>) …
Run Code Online (Sandbox Code Playgroud)

sbcl common-lisp quicklisp

9
推荐指数
1
解决办法
4928
查看次数

长整数到字符串,反之亦然,用数字操作

解决Euler项目问题​​我得到的是我需要使用长数字的数字作为字符串进行操作.我使用sbcl在linux,emacs,slime中工作.

例如,为了得到这个数字2的数字之和,我这样工作,

1)获得力量

CL-USER> (defparameter *answer-as-integer* (expt 2 1000))
*ANSWER-AS-INTEGER*
CL-USER> *ANSWER-AS-INTEGER*
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
Run Code Online (Sandbox Code Playgroud)

感谢Common Lisp,这非常简单.现在我相信一个好方法应该是将reduce应用于这个数字序列.

2)获取字符串

CL-USER> (defparameter *answer-as-string* (write-to-string *ANSWER-AS-INTEGER*))
*ANSWER-AS-STRING*
CL-USER> *ANSWER-AS-STRING*
"10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376" 
Run Code Online (Sandbox Code Playgroud)

现在我有了序列,所以应用reduce,但是我得到错误的东西:这是一个char所以我将转换字符应用于整数:

CL-USER> (reduce #'(lambda (x y) (+  (digit-char-p x)  (digit-char-p y))) *ANSWER-AS-string*)
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

The value 1 is not of type CHARACTER.
   [Condition of type TYPE-ERROR]

Restarts:
 0: [RETRY] Retry SLIME REPL evaluation request.
 1: [*ABORT] Return to SLIME's top level.
 2: [ABORT] Abort thread (#<THREAD "repl-thread" RUNNING {1005DE80B3}>)

Backtrace:
  0: (DIGIT-CHAR-P 1) [optional]
  1: ((LAMBDA …
Run Code Online (Sandbox Code Playgroud)

sbcl common-lisp

9
推荐指数
2
解决办法
269
查看次数

Jupyter和Common Lisp

我试图安装CL-jupyter(成为共口齿不清内核Jupyter),我不能让它工作:当我打开一个新的口齿不清的笔记本电脑(或更改现有的笔记本电脑的内核),它显示后崩溃以下消息:

[I 18:26:50.855 NotebookApp] Kernel started: ccba815a-9065-4fad-9d95-06f6291136d2
To load "cl-jupyter":
  Load 1 ASDF system:
    cl-jupyter
; Loading "cl-jupyter"
...............

cl-jupyter: an enhanced interactive Common Lisp REPL
(Version 0.7 - Jupyter protocol v.5.0)
--> (C) 2014-2015 Frederic Peschanski (cf. LICENSE)

kernel configuration = ((hb_port . 58864) (shell_port . 37462)
                        (transport . tcp) (iopub_port . 43232)
                        (signature_scheme . hmac-sha256)     (control_port . 52184)
                        (stdin_port . 45879)
                        (key . 2ae7d65f-65f9-40d8-bfd4-21760eaec0ca)
                        (ip . 127.0.0.1))
[Hearbeat] starting...
[Heartbeat] thread started
[Heartbeat] thread …
Run Code Online (Sandbox Code Playgroud)

sbcl common-lisp ipython zeromq jupyter

9
推荐指数
1
解决办法
1421
查看次数

如何改变班级的元类

这种情况一次又一次地发生在我身上:我定义了这个类并忘记了我想要它的功能,或者它是,例如,Gtk小部件类,因此它的元类需要说明.一旦它被定义,但是,SBCL不会让我改变了我的元类(即使没有这个类的实例).例如,评估

(defclass foo ()
  ((slot-a)))
Run Code Online (Sandbox Code Playgroud)

然后添加元类并重新评估:

(defclass foo ()
  ((slot-a))
  (:metaclass gobject:gobject-class))
Run Code Online (Sandbox Code Playgroud)

导致错误:

Cannot CHANGE-CLASS objects into CLASS metaobjects.
   [Condition of type SB-PCL::METAOBJECT-INITIALIZATION-VIOLATION]
See also:
  The Art of the Metaobject Protocol, CLASS [:initialization]
Run Code Online (Sandbox Code Playgroud)

不幸的是,我没有"元对象协议的艺术"的副本来检查它的内容.现在我唯一可以解决的方法是重启lisp,这可能会造成很大的破坏性.

由于我很快意识到错误,我不介意通过删除它完全避开已定义的类.问题:

  • 如果我已经创建了类的实例,有没有办法找到它们来使它们无效并让它们获得GCed?
  • 如何删除课程?像fmakunbound功能一样的东西.

sbcl common-lisp clos

9
推荐指数
1
解决办法
452
查看次数

标签 统计

sbcl ×10

common-lisp ×7

lisp ×4

windows ×2

clisp ×1

clos ×1

emacs ×1

ipython ×1

java ×1

jupyter ×1

quicklisp ×1

set ×1

slime ×1

zeromq ×1