【发布时间】:2021-08-10 07:04:00
【问题描述】:
type Pipe[F[_], -I, +O] = Stream[F, I] => Stream[F, O]
我了解F[_]、-I、+O。缺少的部分是右侧的F。为什么不Stream[F[_]]?
我猜左边和右边的F有不同的含义。有没有关于写类型定义规则的官方文档?
我检查 Stream 的类型,
scala> :kind fs2.Stream
fs2.Stream's kind is X[+F[A1],+A2]
另一种情况:
scala> trait Functor [F[_]] {
| def map[A,B] (fn: A=>B)(fa: F[A]): F[B]
| }
trait Functor
scala> :kind Functor
Functor's kind is X[F[A]]
为什么F[A] 没有被 F 替换?当然,我对不同的概念感到困惑,但是我应该在哪里学习它们。
【问题讨论】:
标签: scala generics scala-cats