2010-11-16 70 views
17

標題幾乎說明了一切。我爲我的主要項目使用clojure,但它不是一個好的腳本語言,因爲jvm的啓動速度很慢,並且與某些unixy事物沒有很好的接口。所以我正在尋找一種能夠很好地用作腳本語言的lisp,例如具有良好的管理unix進程的界面,可以輕鬆使用async io等。什麼是unix腳本的最佳lisp/scheme?

回答

13

Scsh(代表「Scheme shell」)可以在http://www.scsh.net處獲得。這是「Scheme 48(符合R5RS標準的新技術Scheme系統)的一個變體......專爲編寫真實的獨立Unix程序和shell腳本而設計。」

有關係統管理的很好的介紹可以在http://www.theillien.com/Sys_Admin_v12/html/v11/i01/a2.htm找到。

+2

是的,scsh很好,部分是因爲它非常明確地是它設計的目的。然而,Racket(在另一個答案中提到)也是一個很好的選擇,因爲它非常完整,它明確表示scsh所有的系統支持。我之前會明確表示scsh,但最近我一直在使用球拍來做這樣的事情。 – 2010-11-16 12:45:49

7

Racket是一個非常好的Scheme實現。它非常強大。其中的一個介紹是從頭開發一個Web服務器。

7

各種常見的unix工具都綁定了Guile。如果您的目標是使這些工具自動化,那麼這可能是一個很好的選擇。

+0

Guile的+1:快速啓動時間,體面的模塊(包括DBD/DBI),並仍在積極開發。也考慮到mzscheme(球拍),但它開始時太慢了。 – minaev 2011-05-10 13:19:09

4

CLISP,Common Lisp的實現,對Unix腳本很有用。

CLISP有很多的擴展,讓有用的腳本:Unicode支持,正則表達式,各種命令行選項,socket流,管道,...

此外CLISP具有相對佔地面積小,是用C爲便攜性和快速啓動 - 對於Common Lisp。

0

ESHELL與elisp的交互使用:

「ESHELL能夠調用在Emacs加載幾乎任何的elisp功能這一點。這種靈活性是無與倫比的;沒有外殼能夠接近Eshell能做的事情行爲,這個功能被Eshell大量使用(並鼓勵!)。如果你想在Emacs中打開foobar.txt文件,你只需調用find-file foobar.txt文件,Eshell就會將其映射到elisp調用文件(find-file「foobar.txt」)併爲你打開文件。「

http://www.masteringemacs.org/articles/2010/12/13/complete-guide-mastering-eshell/

0

我就遇到了這個頁面幾次,而尋找一個很好的方式,端口一些日益-unweildy的bash腳本到一個理智的語言。由於這些腳本已經調用了幾拍的腳本,這是有道理的刪除一層間接性,並使用球拍的一切。

經過一番搜索,我碰到了球拍的shell-pipeline包。從文檔:

該庫使得外部程序和球拍功能的unix風格管線變得輕鬆。你可以像(run-pipeline '(cat /etc/passwd) '(grep root) '(cut -d : -f 1))那樣編寫東西,它會將"root\n"打印到標準輸出(在unix系統上)並返回0。要以字符串形式獲取輸出,請使用run-pipeline/out。您還可以將球拍功能放入管道中。如果您的球拍實施爲grep,名爲my-grep,則可以使用(run-pipeline '(cat /etc/passwd) `(,my-grep root) '(cut -d : -f 1))獲得相同的結果。因此,您可以在Racket中編寫各種過濾器函數,而不是使用shell命令。

相關問題