2017-05-04 6 views
1
Arbeits

Im das following Beispiel in einem Scala Arbeitsblatt ausprobieren:Kleisli in Katzen für Scala Beispiel nicht

import cats._, cats.data._, cats.implicits._ 
val f = Kleisli { (x: Int) => (x + 1).some } 
val g = Kleisli { (x: Int) => (x * 100).some } 

aber es ist nicht Typ überprüfen, die Fehler im ist immer auf Zeile 2 und 3.

Expression von Typ-Option [Int] zu erwarteten Typ

Antwort

3

Es tut typecheck konform dosent F_ [B_]. Was Sie sehen, ist wahrscheinlich Ihre IDEs Scala-Compiler (ich nehme an, Sie sehen dies in IDEA) nicht in der Lage, den Typ abzuleiten, aber wenn Sie dies mit SBT oder in der Scala REPL kompilieren, funktioniert es:

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>) 

Und das Arbeitsblatt können Sie die Fehler markieren, aber der Code kompiliert (IntelliJ 2017.01.02 Ultimate) sehen:

Klesli Scala Worksheet

ich habe auch opened an issue in IntelliJ IDEA issue tracker.

+0

Ist das im Scala Plugin fixierbar oder wird es wohl immer so sein? – user3139545

+1

@ user3139545 Es ist reparierbar. Ich habe [ein Problem behoben] (https://youtrack.jetbrains.com/issue/SCL-11912) –

Verwandte Themen