Scalaではなぜファンクタ高い-Kinded私はファンクタの定義以下のいるタイプ
trait Functor[F[_]] {
def map[A, B](fa: F[A])(f: A => B): F[B]
}
object ListFunctor extends Functor[List] { //
def map[A, B](f: A => B)(data: List[A]): List[B] = data map f
}
が、F
は、コレクション型は、リストとして、であることは非常に一般的です
F
は本当に何を意味するのですか?
Functorは、ListやOptionのような多くの(上位の種類の)共通のインターフェイスです。型パラメータFは、 "これは私たちがインタフェースを定義する型です"と言っています。 –
ありがとう@n.m。あなたの説明はコードの観点から意味があります。私はFunctor [F [_]]のような形式を取る理由を聞きたい。ファンクタは、A => Bで与えられたF [A]をF [B]に変換することを目指していると私は思っています。 F [A]とF [B]が意味を持つのであれば、コンテナやコンテクスト、または他のものにすることができます。 – Tom
もし 'map'の署名がどうなっているのでしょうか? – sepp2k