小编mck*_*mck的帖子

Common Lisp:在列表和数组之间进行转换

我们如何在任意嵌套列表和数组之间进行优雅转换?

例如

((1 2 3) (4 5 6))
Run Code Online (Sandbox Code Playgroud)

#2A((1 2 3) (4 5 6))
Run Code Online (Sandbox Code Playgroud)

反之亦然

arrays list common-lisp

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

Mocha,Chai:断言Object包含在一个对象数组中

如果一个Array包含某个元素,Chai有一个很好的断言方法

expect([1,2,3]).to.include(2);
Run Code Online (Sandbox Code Playgroud)

给定一个对象数组,我想要的是类似的东西:

expect([{a:1},{b:2}]).to.include({b:2});
Run Code Online (Sandbox Code Playgroud)

这可能吗?

javascript testing mocha.js chai

15
推荐指数
3
解决办法
2万
查看次数

与Hunchentoot一起使用Heroku上的Common Lisp?

有没有人能够使用Hunchentoot使用Heroku Common Lisp BuildpackHeroku上成功部署应用程序?

我得到了一个

!     Heroku push rejected, no Cedar-supported app detected
Run Code Online (Sandbox Code Playgroud)

而且我不确定我做错了什么,或者是否还没有支持

更新:

上述错误是由于缺少heroku-setup.lisp文件.Heroku现在接受推送,但尝试访问该网站会出错.

Mike Travers回答了这个问题:" 不,它目前不支持Hunchentoot,但要添加它并不难. "

我想现在的问题仍然是谁能够添加该功能?

common-lisp heroku hunchentoot

8
推荐指数
1
解决办法
1134
查看次数

CLOS实例的等价性?如何检查实例是否从另一个对象继承?

CL-USER> (defclass a () ())
CL-USER> (defclass b (a) ())
CL-USER> (make-instance 'b)
#<STANDARD-CLASS B>
Run Code Online (Sandbox Code Playgroud)

我可以在我的实例b上调用什么谓词函数,如果它继承自?本着:

CL-USER> (instanceof 'a *)
T
Run Code Online (Sandbox Code Playgroud)

inheritance common-lisp clos

6
推荐指数
1
解决办法
842
查看次数

Common Lisp:如何检查插槽是否绑定?(CLOS)

假设我们有一个没有的插槽:initform

(defclass foo ()
  ((x :reader x :initarg x)))
Run Code Online (Sandbox Code Playgroud)

如何检查foo实例的插槽x是否绑定?

有一种方法可以用MOP来做到这一点,我觉得非常难看.有没有更简单的方法?

我宁愿诉诸:

(defclass foo ()
  ((x :reader x :initarg x :initform nil)))
Run Code Online (Sandbox Code Playgroud)

并检查它是否为零 - 在这种情况下,x可能永远不会为零(模糊).

common-lisp clos

5
推荐指数
1
解决办法
1331
查看次数

Common Lisp类型说明符

我最近开始摆弄类型说明符以提高代码效率.是Common Lisp标准中所有类型说明符号的列表.

我看不到穿过森林的树.

任何人都可以给出(或指向)不同类型说明符的简短描述,并且何时可以使用它们?

虽然我有兴趣了解所有这些,但我直接感兴趣的是数字相关类型之间的差异(fixnum,bignum,float,single-float,short-float等...)

performance typing common-lisp

5
推荐指数
2
解决办法
1301
查看次数

通过HTTP方法分配Hunchentoot

我找不到有关如何基于HTTP方法调度的任何文档(在同一uri上)。我得到的最接近是:default-request-typedefine-easy-handler-但似乎调度后者,即使我用GET方法:

(define-easy-handler (index :uri "/" :default-request-type :get) ()
  (log-message* :info "GET on index ------ ")
  (format nil "Hello World"))

(define-easy-handler (echo :uri "/" :default-request-type :post) ()
  (log-message* :info "POST on index ------ ")
  (format nil "~S" (raw-post-data :force-text t)))
Run Code Online (Sandbox Code Playgroud)

sbcl common-lisp hunchentoot

5
推荐指数
1
解决办法
625
查看次数

Common Lisp:如何在带有条件拼接的宏中构建列表?

让我们假设:

(defmacro testing (&optional var)
    `(list 'this 'is  
       ,@(when (consp var) `('a 'list))))
Run Code Online (Sandbox Code Playgroud)

调用时:

>(testing 2)
(THIS IS)

>(testing (list 1 2))
(THIS IS A LIST)
Run Code Online (Sandbox Code Playgroud)

这就是我想要的。但是现在,当我传递一个列表参数时:

>(defparameter bla (list 1 2 3))
BLA
>(testing bla)
(THIS IS)
Run Code Online (Sandbox Code Playgroud)

我想这是因为宏会检查(consp bla)bla 在哪里是符号,而不是列表?我如何防止这种情况?

谢谢

macros common-lisp splice

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

DELETE具有破坏性 - 但并非总是如此?

我对Common Lisp的破坏性DELETE函数有点困惑.它似乎按预期工作,除非项目是列表中的第一项:

CL-USER> (defvar *test* (list 1 2 3))
*TEST*
CL-USER> (delete 1 *test*)
(2 3)
CL-USER> *test*
(1 2 3)
CL-USER> (delete 2 *test*)
(1 3)
CL-USER> *test*
(1 3)
Run Code Online (Sandbox Code Playgroud)

sbcl common-lisp

3
推荐指数
2
解决办法
675
查看次数

Common Lisp 循环累加器:最小化为多值绑定?

(defvar x '((5 . a) (3 . b) (1 . c) (9 . d)))
> X
(loop for i in x minimize (car i))
> 1
Run Code Online (Sandbox Code Playgroud)

我想要的是得到 C 而不是 1。我尝试使用值,因为它仍然会使用第一个返回值进行最小化,但我不知道是否有办法在此使用多值绑定语境?

(loop for i in x
      minimize (values (car i) (cdr i)) into ans
      finally (return ans))
Run Code Online (Sandbox Code Playgroud)

loops sbcl common-lisp

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