小编9mj*_*mjb的帖子

sbcl(目录“*”)不返回所有文件(例如缺少 *.lisp)

SBCL(目录“*”)根据扩展名过滤掉一些文件名。我如何让它返回所有文件,或者特别是所有匹配模式的文件(如在 bash globing 中)

(directory "*") ; 列出一些文件,而不是全部 (directory " MyFile ") ; 列出一些文件,但同样,按扩展名过滤

在我看来被忽略的扩展名……至少没有列出 *.lisp。

Fedora18 上的 SBCL 1.1.2-1.fc18

lisp sbcl common-lisp

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

为什么SBCL eval函数会丢失它运行的宏?

(打印x)打印出我想要的eval,但是(eval x)失败,但如果我运行x它就可以了!我错过了什么?
请告诉我为什么这不起作用,或者我做了一些愚蠢的事情.
我正在尝试打印动态大小的表并设置lambda变量,以最终评估表中每个单元格的表达式.
顺便说一句我弄清楚为什么eval失败了.(eval x)正在丢失宏,但是为什么?!
这有效:

(defvar varlist '(a b c d))
(defvar vvars   '(c d))
(defvar hvars   '(a b))
(macrolet ((AlternateVariable (var &rest body)
               `(dolist (,var '(nil t)) ,@body))
           (AlternateVariables (varlist &rest body)
               (if (null varlist)
                   (cons 'progn body)
                   `(AlternateVariable  ,(car varlist)
                    (AlternateVariables ,(cdr varlist) ,@body)))))
      (let ((listvarlist (cons 'list varlist)))
        (print
         `(AlternateVariables ,(reverse vvars)
            (AlternateVariables ,(reverse hvars)
              (format t "row=~S~%" ,listvarlist) ))))
      nil)
Run Code Online (Sandbox Code Playgroud)

它打印出我想要的东西:

(alternatevariables (d c)
 (alternatevariables (b a) (format t "row=~S~%" (list a b c …
Run Code Online (Sandbox Code Playgroud)

lisp macros eval sbcl common-lisp

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

如何在lisp中进行两次eval(不使用eval)

如何在保持词汇背景的同时再次评估某些内容?

* (defvar form '(+ 1 2))
form
* form
(+ 1 2)
* (eval form) ;; This loses the lexical scope (not an issue here)
3
Run Code Online (Sandbox Code Playgroud)

有关需要词法范围的问题的示例

(let ((a 1) (b 2)
      (form '(+ a b)))
  (print form)
  (print (eval form))  )
(+ a b) 
The variable A is unbound.
Run Code Online (Sandbox Code Playgroud)

如何在同一个词法范围内两次评估该表格?
我想要多少次eval(在相同的词法范围内)?

与之前的问题相关 为什么SBCL eval函数会丢失它运行的宏?

lisp eval common-lisp

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

标签 统计

common-lisp ×3

lisp ×3

eval ×2

sbcl ×2

macros ×1