2015-12-28 70 views
1

我在REPL中定義了一個函數。該功能正常工作,一切都很好。但我的REPL窗口很小,在運行一段時間之後,我只想看看源代碼。有一個源函數,很好。但請稍等......(來源)在Clojure中給REPL定義的函數「未找到」

(defn print-seq [s] 
    (when (seq s) 
    (prn (first s)) 
    (recur (rest s)))) 
=> #'user/print-seq 
(source user/print-seq) 
Source not found 
=> nil 

這裏出了什麼問題? (source source)工作正常,所以它不是我無法執行源代碼。有些事我不明白。請解釋。

回答

2

報價the documentation

打印指定代號的源代碼,如果能找到它。 這要求符號解析爲 命名空間中定義的變量,其中.clj位於類路徑中。

在REPL中定義的函數在類路徑中沒有關聯的.clj文件。

如果您想驗證這一點,請考慮閱讀(source 'source-fn)的輸出;在其表面上,當且僅當在源路徑中存在.clj文件時,該功能才起作用。