Chinaunix首页 | 论坛 | 博客
  • 博客访问: 336073
  • 博文数量: 105
  • 博客积分: 2730
  • 博客等级: 少校
  • 技术积分: 1110
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-20 12:09
文章分类

全部博文(105)

文章存档

2013年(3)

2012年(2)

2011年(36)

2010年(34)

2009年(6)

2008年(20)

2007年(4)

分类: PHP

2011-06-23 17:34:02

seq 还不够给力, 它仅仅把要evaluation 的内容重写成HNF(head normal form).这种结构并不是彻底的evaluation. 它只处理第一个构造器, 对于List这种迭代构造器的形式, 相当于仅仅得到了第一项.

deepseq强制得到NF(Normal Form). 这表示完全的evaluation, 完全消除了lazyness.

典型用途:
main = do h <- openFile "f" ReadMode s <- hGetContents h s `deepseq` hClose h return s

用seq的时候return的字符串只有一截, 也就是第一段缓冲区中的头部数据.
如果连seq都没有, 那么得到的就是空字符串.
在ghci中输入的表达式最终都要被转化成NH.

这也体现了IO不纯净的特点.

注意, 有exception并不说明就不干净. 但是IO一定是不干净的.
阅读(951) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~