首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Haskell

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官方指定的在线图书中找到属于自己的乐趣。

如果这些分享对你有用,支持打赏:

Cardano打赏地址

DdzFFzCqrhssiX2gAn17QNegNvSEixGi5RtgmEqeNrghMnU3F6GbmD1SWA3ZEKkTCuYnMnXTTpwWZrJpfxxiaLwg1Fm4p5z5WeyQWmbB

ERC 20标准的任意代币,打赏地址

0x4A40Eb870DcF533D4dC097c3d87aaFE9f64490A1

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180105G0ZVA300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券