2009年8月2日星期日

Haskell : 副作用与纯函数

:[Real world Haskell] 中文翻译:第二章 类型与函数

副作用引入了系统全局状态与函数行为之间的依赖性。我们暂时从Haskell离开一会,并考虑命令式程序语言。假设一个函数读取并返回全局变量的值。如果其他的代码可以修改这个全局变量,那么对于这个函数的应用将依赖于这个全局变量当前的值。这个函数即使自己没有修改这个变量也将具有副作用

副作用在函数中被无形的导入或导出。而在Haskell中,函数默认不具有副作用:一个函数的结果只依赖于明确提供给它的输入。我们称这样的函数为纯函数;具有副作用的函数是不纯的。

如果函数有副作用,可以在它的类型签名中看出来:函数的结果类型会以 IO 开头。

纯函数的运行结果只由输入参数决定。

没有评论:

发表评论