【发布时间】:2011-03-08 15:57:02
【问题描述】:
Haskell 通常被称为纯函数式语言的示例。鉴于System.IO.Unsafe.unsafePerformIO 的存在,这怎么能证明是合理的?
编辑:我认为“纯功能”意味着不可能将不纯的代码引入程序的功能部分。
【问题讨论】:
-
关于您的编辑:但是仍然可以创建一个可以从命令式程序调用的函数库。最终由程序员决定存在多少功能。
-
引入不纯代码并非不可能,只是不是默认。语言不遗余力地阻止它。然而,不纯的代码有时是有用的。尤其是当安全地隐藏在纯界面后面时。
-
unsafePerformIO 在其中一个问题中被提及了 3 次,但没有明确的合理声明是否会导致 Haskell 不纯。
标签: haskell functional-programming type-systems referential-transparency unsafe-perform-io