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