初识Haskell

在COMP30026 Models of Computation中接触了新的编程语言Haskell,一个以前听都没有听过的语言,在此记录关于Haskell的一些最基本概念。express


1.Haskell是一个函数式编程语言(functional programming language),函数式编程语言最基本的操做是function application。编程

2.GHC(the Glasgow Haskell Compiler)是Haskell的编译器,GHCi是Haskell的互动编程环境。服务器

3.官网www.haskell.org,相关下载、文档、教程都在其中。并发

4.Haskell语言的特色(摘自官网):app

  (1) 静态类型statically typed编程语言

  在Haskell中全部的表达式(expression)的类型(type)在编译时肯定,在function application中的类型必须匹配,不匹配会被编译器拒绝。类型在Haskell中不只是一种保证形式,也是Haskell对程序构建的表示。ide

  (2) 纯函数purely functional函数式编程

  在Haskell中的每个函数(function)都是数学意义上的函数,即便是反作用(side-effect)的IO操做也只是对纯代码产生的操做的描述。没有语句和指令,只有不能改变(局部或全局)变量和访问如时间和随机数状态的表达式,也就是无状态。函数

  *反作用通常是针对操做(表达式)而言的,一个操做/表达式有“反作用”是指在对该表达式求值时,会改变程序的一个或多个数据,以至再次对该表达式求值时,可能会得出不一样的结果。事实上,Java的4种表达式语句如赋值、自增自减、方法调用、对象建立均可能带来反作用。性能

  (3) 类型推断type inference

  没必要在Haskell中明确写出每一个类型。类型将经过双向统一每个类型来推断出。但若是选择写出类型或是要求编译器写出。

  (4) 并发concurrent

  Haskell对效果的明确处理,很是适合并发编程。它的编译器GHC带有高性能并行垃圾收集器和轻量级并发库,其中包含许多有用的并发原语和抽象。

  (5) 惰性lazy

  函数不检测其参数,这意味程序能够很好地经过普通函数和控制结构(如if/else)来组合在一块儿。Haskell代码的纯粹使得功能链更容易融合在一块儿,从而取得性能优点。

  (6) 包packages

  Haskell的开源贡献很是活跃,公共包服务器上提供了范围很是广的包。

相关文章
相关标签/搜索