Haskell隨筆

一晃間接觸Haskell已經快兩年了,完全的淪陷於這種“不實用”的語言。

最初聽說haskell是同學很鄙視的說我們學校之所以逼着學生入門就學Haskell是因爲John在這裏。我才知道原來有一種語言叫haskell,原來有種編程範式叫函數式語言,原來imperative&OO以外的世界有這麼大。於是一時好奇去上了FP課程,繼而AFP,繼而學了很多類型理論和計算模型,最後下定決心連畢設也要用haskell做編譯後端。

0-3個月:
好神奇的語言,syntax和風格都完全不同,發現recursion超好用,而且syntax完全對應人的思維方式,實現數學公式簡單直接。愛上Haskell,對其他語言變得很排斥。

3-6個月:
原來FP很老,還有很多別的語言,對很多語言有影響。原來haskell不是傳說中的那麼“純粹”,monad&monadTransfer是很複雜的東西。很多東西比如class,GADT都似曾相識,在其他範式中都有類似的影子。Haskell的圖形界面很簡陋,做實時的東西還是很麻煩,不像Erlang的message機制。

6-12個月:
Haskell做編譯類的編程遠比一般的語言要簡單有效,我的200行程序跟Java的1000行程序功能是一樣的。於是我更喜歡編譯類問題,進而更喜歡Haskell。與此同時,理智的理解所有語言都有各自的優劣點,不再盲目的喜歡。

12-24個月:
學習類型理論、計算模型之類更數學更理論的內容,進而發現Haskell對於DSL以及邏輯論證也是很強的。閱讀更多的論文發現Haskell有很多方向的延伸,從實時到parallel、meta-programming等等。完全瞭解lambda表達式,fixpoint等等概念,實踐monad&MonadTrans,繼而開始瞭解Desugering,探究syntax背後實際的動作。慢慢見識到haskell的功能之強大,原來haskell什麼都能做到。終於理解到所謂的“純粹”更多的是指將純functional沒有side effect的部分和不純粹會產生side effect的部分分開。嘗試着與不同語言程序員聊一聊各種語言中借鑑FP的部分並加以比較分析,比如C++的Template還有今天聽老大說到Java裏面的generation概念也是從Haskell來的,而且貌似還是haskell老爹之一寫的,一會兒去研究下。

 

其實Haskell真的是我在這裏學習的Side effect,預料外的驚喜,雖然知道學這個基本沒機會在公司用到,但還是願意傾注大量的時間精力,因爲喜歡這種語言也喜歡它帶給我的新視野。在做的畢設很痛苦,一個人做周圍沒有人真的瞭解的東西,但依舊很enjoy。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章