Haskell是一种标准化的、通用纯函数式编程语言,有非限定性语义和强静态类型,在Haskell中,函数是一等公民。
这门语言在数学模型上有着很深的优势,虽然它有很多特性,让人很难接受,随着学习的深入,你才会发现这会多么有趣。
官网:https://www.haskell.org/
如果你有兴趣继续往下阅读,不妨跟我一起了解了解它。本文不是入门教程,你可以阅读官网,本文主要写一写自己的学习的感受,并且告诉你一个初步的运行环境。通过官网,你可以下载到它的运行环境,目前Haskell根据你不同的场景需求,提供了几种安装包,最小的尝试,我们可以从Minimal installers开始,你可以根据你的操作系统平台来选择下载Core还是Full。这两种安装包,都包含了ghc。
ghc包含了三个主最要的部分:
- ghc 编译器
- ghci 交互式解析器和调试器
- runghc 以脚本的方式运行Haskell
而我们即将学习的起点就是在ghci中来练习Haskell的基本语法。
在终端输入ghci进入交互式界面:
Prelude> 1 (-1) = 0
据说“命令式属于工程师”,“函数式属于科学家”,这门语言还有哲学层面的东西。如果能深入下去,感觉数学能力可以爆 的感受。是的,Haskell能让你体验到“非同一般”。刚入门时,我个人的感受觉得真不难,看上去很愉悦完成了入门测验,可是接下来才发现自己知道的越少,越暴露更多愚蠢的感觉。Haskell每一个函数都非常颗粒度,来解决很小的问题,如果我们无法理解这种很小的颗粒度,根本很难从小组合到强大的处理流程。是的,这就是Haskell。
学习Haskell本来的目的是想研究一个区块链项目,已经囤了3000个,感觉入场还是有晚了,平均下来0.7美金收的,但是话又说回来,不自己研究,光看市面上的技术分析帖子,心里多少有点没底。既然看好,就准备长期持有了。如果你没有听说过Cardano项目,不妨也试着去了解一番,https://www.youtube.com/watch?v=Ja9D0kpksxw (创办者Charles Hoskinson的白板解说,自备访问外国网站。)当然,它的开发进度还并没有很好的完善(https://cardanoroadmap.com/),同样的你可以审计(https://github.com/input-output-hk/cardano-sl)仓库里的代码。这个项目,有趣的地方在于很多审计需要符合科学与哲学,它要解决的问题很像是比特币 以太坊,很有意思的是它通过民主投票的方式来解决分歧,我很喜欢这个特性,我们持有的Cardano代币,就能让我们进行投票,并且这不是损耗Cardano代币。
(注明:本文不是投资建议,仅仅是从Haskell引发出来的Cardano项目)
是的,Cardano就是用Haskell来编写的,(我这样的渣渣也仅仅是阅读和学习)Haskell的用户大部分都是教授或者是数学领域的牛人,这也奠定了Cardano项目的背景。
回归语言Haskell,函数式的编程其实有一点上,大家都很清楚,用很少的代码来完成一件事情。Haskell还可以定义跟数学的过程一一对应,这就很有意思了。我们知道计算机学科其实也是一门数学学科,你想想,能跟数学的过程一一对应的语言,在研究领域,得多牛逼。
Haskell有模块,也有高阶函数,同样的也有.操作符,更多的时候你要弄明白的是很多设计的哲学,带着Why,How去学习这门语言。比如Haskell里的条件控制流程,if then else 里的else是强制要求的,Why?因为它一定必须要有返回值,属于expression。这种命令式的语言,有时候也很容易让很困惑。比如add::Int -> Int -> Int,其实这翻译成我们能看懂的函数就是int (*add)(int,int) ,函数add会返回一个int类型。
我觉得,我这小小门入,就不耽误大家了,如果大家有兴趣,一定可以从(http://learnyouahaskell.com/)Haskell官方指定的在线图书中找到属于自己的乐趣。