4
所以,我試圖在elisp的一個通用的網絡搜索功能:如何通過在elisp的lambda表達式
(defun look-up-base (url-formatter)
(let (search url)
(setq search(thing-at-point 'symbol))
(setq url (url-formatter search))
(browse-url url))
)
此功能將剛搶光標下的單詞,格式化的Web字使用url-formatter進行搜索,然後在Web瀏覽器中打開搜索字符串以執行搜索。
接下來,我嘗試使用前面的函數作爲基礎實現一個函數,該函數將光標下的單詞Google。
(defun google()
(interactive)
(look-up-base (lambda (search) (concat "http://www.google.com/search?q=" search))))
的Emacs不會抱怨,如果我嘗試評價它,但是當我嘗試使用它,Emacs的給了我此錯誤消息:
setq: Symbol's function definition is void: url-formatter
而且我不知道爲什麼會這樣。我看不出功能有什麼問題,我做錯了什麼?
請注意,至少在elisp和common lisp中這是正確的,但它仍然主要是函數和變量作用域/名稱間距的人工產物。在scheme和clojure以及其他沒有函數和變量的單獨命名空間的lisp中,可以使用lambda表達式作爲計算列表的第一個元素,並將其作爲函數調用工作。 – 2011-03-18 23:17:29