sal*_*lc2 6 haskell functional-programming scala io-monad
我知道在IO运算符的Scalaz中有一些几乎相同的实现putStrLn :: String -> IO (,getLine :: IO String但是我的意思是Scala标准API为什么没有这样的等价物?我知道Scala不是Haskell的纯语言,并且有副作用,但我认为这种数据类型是如此描述性和有用.我不知道Try,Option还是Either会做的工作.
Scala的标准库没有IO monad.像Monix,Scalaz,FS2和现在的Cats这样的库提供IO monads(或具有并发支持的Task).如果你想要haskell类型编程,你将需要其中一个库,特别是Cats或Scalaz,还有其他有用的工具和类型类(例如实际的functor和monad类型).
Scala 具有隐式环境副作用,就像 C\xe2\x99\xaf、Java、C++、Objective-C、Swift、C、Pascal、Basic、Perl、PHP、Python、Ruby、ECMAScript 等一样。没有类型为了IO。
有一些第三方库提供了IO类型,但它没有提供与 Haskell 相同的保证:Haskell 只有很少的逃生舱口 ( unsafePerformIO),而在 Scala 中,几乎拥有一切都是逃生舱口。
然而,有一些想法,我相信甚至可以在 Scala 中研究效果系统的原型,而 Dotty 的精简、更强大和声音类型系统可能会为此奠定更好的基础。
\n