haskell,如何学习Haskell
一、如何学习Haskell
从就业角度来来谈,Haskell不是主流企业开发语言,使用比较少,公司需求也少,不好找工作,除非你学的比较精,C++,java,C,PHp是企业开发的主流语言,企业需求多,以后好就业,工资高低,看你学的深度的高低了。
从爱好的角度来谈:学习哪门语言都是无所谓,编程语言毕竟是工具,最重要的是编程的思维:算法的设计与实现,而且每种语言都有自己的优势,都有自己擅长的应用领域。
个人建议:C++作为第一编程语言来学,用于就业,要学深;将Haskell作为第2语言,而不是放弃,需要时再学,边学边用!
二、女朋友刚刚接触编程,让她学Haskell是否合适
对于没有接触过编程的人,学Haskell不合适。
原因在于Haskell语法过于精简,精简到会编程的人一看就会,不会编程的人难以补全想象期间的过程。也就是会的人一看就会,不会的加大的学习难度。
刚接触编程,最好是学习python或者php这样的显式语法编程语言。
例如定义一个函数,python中是def函数名,调用是函数名(),而Haskell这个过程全精简了,直接就是函数名,调用时也是函数名也没啥()识别,只能脑补,况且学编程的人很容易搞混定义函数与调用函数,这两个过程的状态是相反的,Haskell通过一定语法规则区分两者,但对初学者却是费脑筋。其实有很多程序员分不清函数function与方法method有何差别。
初学不宜学C和JAVA这种语法过于详细繁琐的语言,也不宜学过于精简的Haskell。况且Haskell应用很少。还是学python吧,0基础少儿都能学会。
三、haskell maybe怎么用
Maybe的定义是dataMaybea=Justa|Nothing.其中Just和Nothing是构造器,a属于任意合法类型。Nothing多用于表示错误信息。比如这个函数x除以y:div::Float->Float->MaybeFloatdivxy=if(absy<0.00001)thenJust(x/y)elseNothing--absy<0.00001表示y接近0在这段程序,如果y接近0,除法结果会是Nothing。
如果是div2.62,结果是Just1.3。在取出Maybe的Just数据时,你可以用patternmatching(我不确定如何翻译,意思大致是类型结果匹配)取出数据。
如果你学过monad,用return写maybe会更加容易。