小编mig*_*uel的帖子

在Scala和Haskell中要求类型的类型

当我在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)

......它说都是更高级的类型.为什么第一个没有被归类为合适的类型?造成这种差异的原因是什么?

haskell scala higher-kinded-types

15
推荐指数
1
解决办法
192
查看次数

如何正确使用Akka的事件流?

我一直在Play应用程序中使用Akka的事件流作为事件总线,我可以发布事件和订阅听众,我想知道我应该考虑的问题是什么.具体来说有两件事:

  • 每个监听器都是通过一个接收已发布事件并处理它们的actor来实现的.如果演员的消息队列开始变大怎么办?如何安全地实施背压,保证最终处理每个事件?
  • 与前一个相关:如何保留未处理的事件,如果失败,应用程序可以再次启动并处理它们?我知道akka-persistence的存在但是我不确定在这种情况下这是否是正确的做法:监听器演员不是有状态的,他们不需要重播过去的事件,我只是想要存储未处理的事件,并在处理完毕后删除它们.

scala akka playframework

6
推荐指数
1
解决办法
1453
查看次数

撰写期货和期权

我有四种类型A,B,CD,将初始值x的类型的Future[Option[A]]和三个功能:f1: A => Option[B],f2: B => Future[Option[C]]f3: C => D.

如何for从一开始就编写一个理解x结果,这个结果Future[Option[D]]将是三个函数的"组合" 类型的值?

functional-programming scala for-comprehension

2
推荐指数
1
解决办法
657
查看次数