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。

你可能感兴趣的:(随笔,感想,haskell,理解,休闲)