【发布时间】:2016-03-15 18:46:04
【问题描述】:
人们总是说 Haskell 的类型系统可以防止不纯代码污染纯代码,因为您总是必须在类型签名中指定 IO。但是,这是类型系统本身的结果,还是真的只是 IO(..) 没有导出?
基本上,如果类型构造函数可用,这样的事情不是真的可以做吗?
ioToPure :: IO a -> a
ioToPure (IO ioValue) = ioValue
【问题讨论】:
-
hackage.haskell.org/package/base-4.8.2.0/docs/… 中的函数基本上按照您的描述进行 - 出于明显的原因,强烈建议不要这样做
-
@KevinW。哦,是的,duh :) 非常感谢。
标签: haskell module type-systems purely-functional io-monad