Type/data/newtype in Haskell
Haskell提供了抽象代数类型(Algebra Data Type)来完成对数据的封装;其中最直观的是 data 关键字声明,可以用C/C++中的struct/class 来类比。此外,我们还可以用 type 和 newtype 来定义一些数据抽象。type所定义的就是一个已有类型的别名,其主要作用就是为了提高...
Haskell提供了抽象代数类型(Algebra Data Type)来完成对数据的封装;其中最直观的是 data 关键字声明,可以用C/C++中的struct/class 来类比。此外,我们还可以用 type 和 newtype 来定义一些数据抽象。type所定义的就是一个已有类型的别名,其主要作用就是为了提高...
Haskell中存在三种层次的函数过程抽象,依据约束的多少分别有 Functor, Applicative 和 Monad。Functor是一种最基本的调用提升,通过fmap可以将传入参数函数作用于所wrapper的type;而Applicative和Monad则定义了更多的运算符和原子函数等。
作为一种函数式语言,haskell提供了各种高级的函数编程抽象支持:Functor抽象了那些作用于函数(或者类型封装)内的数据的操作并且将其运算结果用对应函数封装的抽象运算, 其核心是提供了Functor typeclass 和 fmap操作。
正则表达式是文本解析处理的一大利器,因而大部分程序语言都以库的方式提供支持。在Haskell中,有多种不同的实现可供使用,详细看参考wiki, 他们的效率和支持的特性有些微的差异。但是作为一种强类型的静态/函数式语言,haskell的正则匹配可以借助返回值类型多态提供灵活的匹配结果。
作为一个函数式强类型语言,Haskell 尽可能的保证提供纯函数特性,即任何操作都不会有副作用 - 给定相同的参数输入,给定函数必须产生相同的输出结果;这个保证看起来很优美很干脆(容易测试并容易并行处理),但是现实世界中的问题确实则不能通过纯函数的方式解决,譬如IO输入输出,系统文件操作等;这些操作的过程依赖于...