Scalaz 7 Verwendung Funktor mit Function1

Hallo, ich bin starsting zu lernen Scalaz.

Ich möchte eine Funktion und Karte, über die es mit einer anderen Funktion.

obwohl ich in der Lage bin, dies zu schreiben:

import scalaz._, Scalaz._

import std.function._
import syntax.monad._

((x: Int) => x + 1) map {_ * 7}

und es funktioniert, wenn ich das explizite Programm, wie pro die Beispiele in github-Projekt funktioniert es nicht (siehe unten)

import scalaz._, Scalaz._

import std.option._
import std.function._
import syntax.monad._

Functor[Function1[Int,Int]].map{x:Int => x * 4}{(x:Int) =>x * 7}

Ich bekomme als Fehler

Error:(10, 17) Function1 nimmt zwei Typ-Parameter erwartet: eine Functor[Function1].Karte{x:Int => x * 4}{(x:Int) =>x * 7}

Ich habe, inspiriert mich, von der ein Beispiel in den doc, das funktioniert

Functor[Option].map(Some("adsf"))(_.length)

1 Antworten

  • Mario Galic
    4. Mai 2019

    Funktor.gelten Signatur

    def apply[F[_]](implicit F: Functor[F]): Functor[F] = F
    

    wo wir sehen, es dauert ein Typ-Konstruktor F[_] anstelle von type-Parameters, so können wir versuchen, die Bereitstellung von ({type F[B] = Int => B})#F statt Int => Int wie so

    Functor[({type F[B] = Int => B})#F].map((x: Int) => x * 4)((x: Int) => x * 7)