当我编译下面的代码时,SBCL抱怨g!-unit-value和g!-unit是未定义的.我不知道如何调试这个.据我所知,flatten失败了.
当展平到达defunits的未引用部分时,似乎整个部分被视为原子.这听起来不对吗?
以下使用Let over Lambda一书中的代码:
保罗格雷厄姆公用事业
(defun symb (&rest args)
(values (intern (apply #'mkstr args))))
(defun mkstr (&rest args)
(with-output-to-string (s)
(dolist (a args) (princ a s))))
(defun group (source n)
(if (zerop n) (error "zero length"))
(labels ((rec (source acc)
(let ((rest (nthcdr n source)))
(if (consp rest)
(rec rest (cons (subseq source 0 n) acc))
(nreverse (cons source acc))))))
(if source (rec source nil) nil)))
(defun flatten (x)
(labels ((rec (x acc)
(cond ((null x) acc) …Run Code Online (Sandbox Code Playgroud) 我想在使用 Emacs 时运行分析器来识别我最常使用哪些键命令,以便将它们重新映射到(更)容易的键组合。有人可以推荐一个吗?我怀疑我是第一个需要这个的人。否则,欢迎任何想法。
我有一个Go程序,出于效率原因无法在Common Lisp中重写.如何通过Common Lisp运行它?
目前的选项:
在我看来,使用外部函数接口就像是"正确"的方法.然而,我所做的研究直接导致死路一条.如果这是胜利者,有什么资源可以学习如何与Go交互?
在侦听端口的同时让Go程序一直运行会起作用.如果这是最好的方式,我会继续尝试使它工作.
这似乎是各种错误的.
还是有一种我还没想过的很棒的方式?
我的网站的URI结构最近发生了巨大变化,我需要将所有旧页面重定向到它们对应的新页面。我对所有旧的和新的URI都有点对点的列表。目前,我正在尝试为每个循环定义简单的处理程序:
(let ((redirects '(("/old/uri/example-1" . "/new/uri/example-1"))))
(dolist (redirect redirects)
(hunchentoot:define-easy-handler (???? :uri (first redirect)) ()
(redirect (rest redirect)))
))
Run Code Online (Sandbox Code Playgroud)
也许有更好的方法。假设define-easy-handler是正确的,则每个easy处理器都需要一个函数符号。我尝试以下无济于事:
什么是完成此任务的好方法?