Scalaz和主要方法

时间:2015-09-10 06:24:27

标签: scala haskell monads scalaz

我试图用我的玩具项目学习Scalaz,我在Haskell中使用monad,现在我想学习如何在Scala中使用Scalaz。

最大的问题是,如何在Scala的主要方法中使用IO() Monad?

在Haskell中,main函数的类型为IO(),而在Scala中的类型为()

我到目前为止找到的解决方案是创建另一个foo类型的函数IO(),并在主方法中调用foo.unsafePerformIO()。但这让我感到畏缩。

什么是解决方案?

1 个答案:

答案 0 :(得分:0)

斯卡拉的本土主要方法意味着副作用;在其中调用unsafePerformIO是完全安全的。

事实上,考虑到大多数Scala项目都不是100%纯/ Scalaz代码,这种方法可能是最惯用的方法。有人可能提供了一个优雅的#34;包装它,但除了化妆品之外它不会增加任何价值。而且,大多数情况下,无论如何,您都要将Scalaz IO动作嵌入更主流,非纯粹甚至可能无功能的Scala代码中。

此外,一般而言,甚至在Haskell中,unsafe函数通常只是makeSureYouKnowWhatYoureDoing函数。

相关问题