减少调用会给REPL和编译器带来奇怪的错误

时间:2013-11-25 03:21:29

标签: lisp common-lisp

这是书中的一个例子:

(reduce (lambda (best itemx)
          (if (and (evenp itemx) (> itemx best)) 
              itemx
              best))
        '(1 2 3 4 5 6)
        :initial-value 0)

它显示在书中运行良好,但在我的SBCL REPL中,我得到一个错误“undefinied variabled”,它将该变量的名称作为空白(或者可能是几个空格)。

这里有什么奇怪的东西吗?

我也试过把它变成一个函数:

(defun find-largest-even (list) 
  (reduce (lambda (best itemx)
            (if (and (evenp itemx) (> itemx best)) 
                itemx
                best))
          list
          :initial-value 0))

但是这不能编译。它突出显示了lambda参数和报告中的itemxthe octet sequence #(244) cannot be decoded.

1 个答案:

答案 0 :(得分:2)

粘贴的代码很好。

您描述的行为表示非ascii字符上的lisp窒息。

请将代码复制到Emacs中,并使用例如

查找有问题的字符
(defun my-search-for-non-acsii ()
  (interactive)
  (skip-chars-forward "\000-\177"))