使用Haskell編寫的Yi-義編輯器

NO IMAGE

宣告:作者水平有限,本文可能言辭不周甚至會存在謬誤,請閱讀時轉動您的灰色腦細胞。另轉載請註明出處。

無論在windows上還是linux上我一直使用VIM編輯器,在感嘆VIM的強大的同時卻也積攢了一些不滿。比如VIM即難以作為編輯模組嵌入其他程式,也沒有EMACS那樣的子程序互動能力,只有一種server模式。另外VIM的Script也怪弱的,與buffer互動性太差了,只提供了行粒度上的互動函式。感覺VIM的Script充其量只能算一種高階的巨集,和EMACS的lisp比起來應該有一定的差距。

今天在google上亂搜,發現了一個基於haskell的Yi-義編輯器,以漢字命名,咋一看還以為國人寫的呢!我對haskell早有耳聞,一是它的函數語言程式設計特性,二是使用haskell實現的perl6直譯器pugs。Perl6的Pugs實現的作者唐宗漢這樣評價haskell的:

“faster than C , more concise than Perl, more regular than Python, more flexible than Ruby, more typeful than C#, more robust than Java, and has absolutely nothing in common with PHP.”

Yi編輯器現在還是比較原始,不過除了console介面外也GUI介面,從Yi的網頁上可以得知它的目標是揉合EMACS和VIM的特性,提供一個以haskell為擴充套件的小型,高靈活性、高可擴充套件性、高可配置性的編輯核心。與VIM的Script相比,haskell是一門全功能的程式語言;與EMACS的lisp相比,haskell基於lisp和scheme,進化度更高,由此看來haskell應該是一個很不錯的選擇。我已經把對haskell的學習列入計劃之中,不過國內似乎還沒有出版haskell相關的書籍!看來只能看網上教程和啃官方文件了。

其實其他可以作為嵌入指令碼的語言也不少,常見的如python、perl、javascript、lua、ruby等。我沒有深入研究,泛泛而談感覺python傾向於與C語言互動;perl作為系統管理工具的味道太濃;javascript難脫web控制語言的根性就其本身而言資料處理能力太弱;lua聲稱是“專用”嵌入式語言,目前也已經應用在了Scite(功能強大的基於scintilla的編輯器)、Kyzis(一個試圖模仿VIM的編輯器,圖形介面KDE下可用)等編輯器上,至於應用效果怎麼樣尚待進一步調查觀望;ruby沒接觸過不好評論,不過目前ruby上大紅大紫的應用也就只有RoR,給人一種“只此一能“的感覺。