Cats for Scala 示例中的 Kleisli 不起作用
Kleisli in Cats for Scala example not working
我正在 Scala 工作表中尝试 following 示例:
import cats._, cats.data._, cats.implicits._
val f = Kleisli { (x: Int) => (x + 1).some }
val g = Kleisli { (x: Int) => (x * 100).some }
但是它没有类型检查,我得到的错误在第 2 行和第 3 行。
Expression of type Option[Int] dosent conform to expected type F_[B_]
它会进行类型检查。您所看到的可能是您的 IDE Scala 编译器(我假设您在 IDEA 中看到了这一点)无法推断类型,但是如果您使用 SBT 或在 Scala REPL 中编译它,它会起作用:
scala> :pa
// Entering paste mode (ctrl-D to finish)
import cats._
import cats.data._
import cats.implicits._
val f = Kleisli { (x: Int) => (x + 1).some }
// Exiting paste mode, now interpreting.
import cats._
import cats.data._
import cats.implicits._
f: cats.data.Kleisli[Option,Int,Int] = Kleisli(<function1>)
还有工作表,可以看到高亮错误,但是代码编译通过(IntelliJ 2017.1.2 Ultimate):
我也在 IntelliJ IDEA 问题跟踪器中 opened an issue。
我正在 Scala 工作表中尝试 following 示例:
import cats._, cats.data._, cats.implicits._
val f = Kleisli { (x: Int) => (x + 1).some }
val g = Kleisli { (x: Int) => (x * 100).some }
但是它没有类型检查,我得到的错误在第 2 行和第 3 行。
Expression of type Option[Int] dosent conform to expected type F_[B_]
它会进行类型检查。您所看到的可能是您的 IDE Scala 编译器(我假设您在 IDEA 中看到了这一点)无法推断类型,但是如果您使用 SBT 或在 Scala REPL 中编译它,它会起作用:
scala> :pa
// Entering paste mode (ctrl-D to finish)
import cats._
import cats.data._
import cats.implicits._
val f = Kleisli { (x: Int) => (x + 1).some }
// Exiting paste mode, now interpreting.
import cats._
import cats.data._
import cats.implicits._
f: cats.data.Kleisli[Option,Int,Int] = Kleisli(<function1>)
还有工作表,可以看到高亮错误,但是代码编译通过(IntelliJ 2017.1.2 Ultimate):
我也在 IntelliJ IDEA 问题跟踪器中 opened an issue。