2016-01-09 13 views
7

ich die Katzen Scala Bibliothek verwenden und die IntelliJ IDE scheint mit dem Einsatz von implicits kämpfen werden:Falsch Fehler bei der Verwendung von Katzen Bibliothek in IntelliJ

Hier ist ein einfaches Beispiel:

import cats.std.all._ 
import cats.Traverse.ops._ 

def useSequence[A](ls : List[Option[A]]) : Option[List[A]] = { 
    ls.sequence 
} 

In IntelliJ, dieser Code ist rot hervorgehoben. Aber ich kann mit Make Project oder der Befehlszeile gut bauen.

Momentan befindet sich der Fehler ist:

Expression von Typ Nothing [Liste [Nichts]] entspricht nicht erwarteten Typ Option [Liste [A]]

Andere Zeiten der Fehler ist so etwas wie:

Wertsequenz kein Mitglied der Liste ist [Option [A]]

Ist das ein Fehler in IntelliJ oder fehlt mir eine Konfiguration?

Ich verwende IntelliJ 15.0.2 mit Version 2.0.4 des Scala-Plugins.

+5

es ist im Grunde ein intellij Fehler, kann es nur folgern, so viel, und das sieht aus wie es einige Makros verwendet, die es macht sogar schwerer für intellij, um Typen zu folgern (Katzen benutzt Makros nicht Sie). Wenn Sie möchten, dass intellij glücklich ist, müssen Sie ihm noch ein paar Typen geben: ls.sequence [Option, A] '. – Noah

Antwort

0

Dies ist eine offene Frage in IntelliJ/Scala Plugin (SCL-10259 - False error (good code red): sequence from cats) öffnen seit 13. Mai 2016.

Wie @Noah Kommentare oben ist die Abhilfe für jetzt IntelliJ, um zu helfen, indem sie die Art des Behälters bereitstellt und enthielt Typen, die Sequenz angewendet wird, dh (aktualisiert für Katzen 1.0):

import cats.instances.all._ 
import cats.Traverse.ops._ 

def useSequence[A](ls : List[Option[A]]) : Option[List[A]] = 
    ls.sequence[Option, A]