所以我一直在研究Clojure教程,到目前爲止它非常有趣。不幸的是,每次關閉我的REPL時,我都會丟失前一個會話中創建的所有defn
和def
。如何將Clojure REPL的內容轉儲到文件中?
因此,爲了節省時間,是否有可能讓Clojure REPL保存我輸入到文件中的所有內容,以便我可以挖掘出我需要的未來用途?
所以我一直在研究Clojure教程,到目前爲止它非常有趣。不幸的是,每次關閉我的REPL時,我都會丟失前一個會話中創建的所有defn
和def
。如何將Clojure REPL的內容轉儲到文件中?
因此,爲了節省時間,是否有可能讓Clojure REPL保存我輸入到文件中的所有內容,以便我可以挖掘出我需要的未來用途?
我認爲大多數人通過使用IDE將代碼片段發送到REPL而不是在REPL中進行大量的直接黑客工作。這樣您就可以更好地瞭解程序的當前狀態。
如果您使用的是類Unix操作系統,則可以使用rlwrap
啓動REPL。這會讓你以簡單的方式訪問歷史命令的Ctrl-R,以及存儲歷史本身。
您只需要安裝rlwrap
並將其前置到您啓動REPL的行,例如, rlwrap lein repl
如果你use Emacs and SLIME,你可以保存REPL緩衝區到一個文件就像保存任何其他緩衝區。
小貼士:
這實際上是一個比看起來更難的問題,因爲像這樣的轉儲必須考慮符號和變量依賴性,並以正確的符號順序輸出到文件。這就是說,由於代碼是數據,所以應該能夠編寫一個能夠實現這一點的函數。
在很多Lisps中,這可以通過包含所有狀態的「保存圖像」來實現,例如, http://www.sbcl.org/manual/Saving-a-Core-Image.html,但據我所知,Clojure沒有這樣的設施。 –