2016-09-27 74 views
7

我在開發環境中使用Emacs和SLIME。當我鍵入(write-to然後C-M-i我得到以下的自動填充功能:奇怪的自動完成導致emacs +通用lisp

Click on a completion to select it. 
In this buffer, type RET to select the completion near point. 

Possible completions are: 
write-to-sting 
write-to-string 

我知道Common Lisp是強大的,但我想write-to-sting不在ANSI標準。谷歌沒有提供這個功能的單一命中。然後我試圖在SBCL代碼中找到它,但是alas

(documentation 'write-to-sting 'function)返回nil因此它沒有文檔字符串。

當我嘗試執行功能(write-to-sting)我得到The function COMMON-LISP-USER::WRITE-TO-STING is undefined.

中肯還發現了一個未綁定功能:

(apropos 'write-to) 
WRITE-TO 
WRITE-TO-STING 
WRITE-TO-STRING (fbound) 

我的問題是:這是怎麼回事?有沒有人知道這個功能背後的故事?

回答

9

在您與Lisp環境交互期間的某個點,寫了write-to-sting並且它被Lisp閱讀器讀取。該符號在COMMON-LISP-USER包中被執行。畢竟,也許你打算實現一個向Sting發送郵件的函數,誰知道? 自動補全通過過濾環境中當前已知的符號起作用。

您可以安全地(unintern 'write-to-sting)(或實現它)。

+1

*捂臉*我做了如下試驗:我寫的(blablabla),退出調試器,然後(中肯「BLA)顯示功能...所以你是正確的 - 錯誤輸入功能實習生輸錯版... – tsikov