2013-11-25 45 views
-2

奇怪的錯誤,這是一本書的例子:減少通話給出了REPL和編譯器

(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.

+0

我勸你還是不要只是給我們的代碼,並詢問什麼是錯的。它不是一個大規模的代碼轉儲,但它仍然只是問問什麼是錯誤的。 –

+1

@某人或其他人,這正是這個網站是男人的問題。 – johnbakers

+2

我在這裏看不到問題。 @某人或另一個SO充滿了代碼塊,人們可以合理地嘗試調試和發現錯誤。所以當然他們在問什麼是錯的? –

回答

2

您粘貼的代碼很好。

您描述的行爲表示Lisp窒息在非ascii字符上。

請複製代碼到Emacs和使用,如發現有問題的人物,

(defun my-search-for-non-acsii() 
    (interactive) 
    (skip-chars-forward "\000-\177")) 
+0

謝謝,這有助於瞭解這些錯誤如何轉化爲問題 – johnbakers