当我在Haskell中询问那种情况时[Int],[]我得到:
Prelude> :k [Int]
[Int] :: *
Prelude> :k []
[] :: * -> *
Run Code Online (Sandbox Code Playgroud)
这是有道理的:第一个是合适的类型,第二个是更高的类型.
但是当我在Scala中做同样的事情时:
scala> :k -v List[Int]
scala.collection.immutable.List's kind is F[+A]
* -(+)-> *
This is a type constructor: a 1st-order-kinded type.
scala> :k -v List
scala.collection.immutable.List's kind is F[+A]
* -(+)-> *
This is a type constructor: a 1st-order-kinded type.
Run Code Online (Sandbox Code Playgroud)
......它说都是更高级的类型.为什么第一个没有被归类为合适的类型?造成这种差异的原因是什么?
我一直在Play应用程序中使用Akka的事件流作为事件总线,我可以发布事件和订阅听众,我想知道我应该考虑的问题是什么.具体来说有两件事:
我有四种类型A,B,C和D,将初始值x的类型的Future[Option[A]]和三个功能:f1: A => Option[B],f2: B => Future[Option[C]]和f3: C => D.
如何for从一开始就编写一个理解x结果,这个结果Future[Option[D]]将是三个函数的"组合" 类型的值?