haskell

STM in Haskell

本文有 2514 字,大约需要 6 分钟可以读完, 创建于 2012-08-12

传统的并发变成模型通过Mutex/Conditional Variable/Semaphore的设施来控制对共享资源的访问控制,但是这一经典模型使得编写正确高效的并发程序变得异常困难: 遗漏合适的锁保护导致的race condition 锁使用不当导致的死锁deadlock 异常未...

Concurrency with Haskell

本文有 6614 字,大约需要 16 分钟可以读完, 创建于 2012-07-23

随着基于CPU频率的摩尔定律的失效,现代的计算机体系都采用多核的方式提高处理能力,传统的编程思维和模式在多核时代则遭遇越来越多的问题;而函数式编程则在很大程度上提供了完全不同但是更为优雅的思路。作为纯函数式编程语言,Haskell的并发编程则和传统的过程式语言有着明显的不同。

Type/data/newtype in Haskell

本文有 1538 字,大约需要 3 分钟可以读完, 创建于 2012-04-24

Haskell提供了抽象代数类型(Algebra Data Type)来完成对数据的封装;其中最直观的是 data 关键字声明,可以用C/C++中的struct/class 来类比。此外,我们还可以用 type 和 newtype 来定义一些数据抽象。type所定义的就是一个已有类型的别名,其主要作用就是为了提高...

Haskell Functor/Applicative Functor

本文有 8028 字,大约需要 20 分钟可以读完, 创建于 2012-04-18

Haskell中存在三种层次的函数过程抽象,依据约束的多少分别有 Functor, Applicative 和 Monad。Functor是一种最基本的调用提升,通过fmap可以将传入参数函数作用于所wrapper的type;而Applicative和Monad则定义了更多的运算符和原子函数等。

Haskell Functor & Monad

本文有 3032 字,大约需要 7 分钟可以读完, 创建于 2012-04-15

作为一种函数式语言,haskell提供了各种高级的函数编程抽象支持:Functor抽象了那些作用于函数(或者类型封装)内的数据的操作并且将其运算结果用对应函数封装的抽象运算, 其核心是提供了Functor typeclass 和 fmap操作。

Haskell regular expression

本文有 1478 字,大约需要 3 分钟可以读完, 创建于 2012-03-30

正则表达式是文本解析处理的一大利器,因而大部分程序语言都以库的方式提供支持。在Haskell中,有多种不同的实现可供使用,详细看参考wiki, 他们的效率和支持的特性有些微的差异。但是作为一种强类型的静态/函数式语言,haskell的正则匹配可以借助返回值类型多态提供灵活的匹配结果。

Haskell typeclass

本文有 3538 字,大约需要 8 分钟可以读完, 创建于 2012-03-22

Haskell 中也有class关键字,但其目的却和 OO 中的类有着巨大的差别。在 OO 世界中,类用来描述一大堆具有共同数据和行为的对象的抽象;而 Haskell 中的 class 则是用于抽象提供同样函数接口的数据类型。每一个 ADT 都可以用instance来生命其满足某个 class 并且给出对应于具体...

haskell函数式编程

本文有 3580 字,大约需要 8 分钟可以读完, 创建于 2012-03-17

作为纯函数式语言,haskell的主要特征之一即是提供丰富的函数式变成设施,包括 recursion / composition / lambda / partial & currying 等。Haskell本身的强类型约束和延迟赋值,使得其函数式风格明显区别于流行的 ruby/python 等其它语言。