当您的计算步骤是独立的时,通常会提到应用仿函数作为monad的替代.他们经常提到的一个优点是,当你想要堆叠应用程序时,你不需要变换器,因为F[G[X]]
它总是一个应用程序.假设我有以下功能:
def getDataOption(): Option[Data]
def getUserFuture(): Future[User]
def process(data: Data, user: User)
Run Code Online (Sandbox Code Playgroud)
我想有优雅的堆叠,以获得Future[Option[User]]
与Future[Option[Data]]
和地图与process
.
到目前为止,我只想出了这个(使用Cats):
Applicative[Future]
.compose[Option]
.map2(
Applicative[Future].pure(getDataOption()),
getUserFuture().map(Applicative[Option].pure))(process)
Run Code Online (Sandbox Code Playgroud)
但我相信这远非理想.是否有更优雅和通用的方式来实现相同的目标?
我正在使用人力车(基于d3.js)来绘制堆积的条形图.问题是第一个栏通常比其他栏更高,破坏了视觉反馈.
使用对数标度(我猜)这里不是一个选项,因为那时条形图中堆栈之间的比例会被破坏.我想引入一个横向中断,如下图所示:
但是,我找不到Rickshaw或d3.js的任何开箱即用的功能来做这样的事情.有关如何制作一个的任何建议?
我使用Redis和Scala(rediscala库).我需要创建一个这样的事务:
redisTransaction.watch(key)
redisTransaction.zremrangebyscore(key, limit, limit) *>
redisTransaction.zadd(key, (someValue, entry)) *>
redisTransaction.set[ByteString](s"$lastSeqNumKey", sequenceNum) *>
redisTransaction.exec().void
Run Code Online (Sandbox Code Playgroud)
最后一个表达式应该返回一个Future[Unit]
我希望在事务失败时失败的表达式.但是,Redis文档指出:
使用WATCH时,如果执行中止,EXEC可以返回Null回复.
什么是"空回复"?我的Future[Unit]
遗嘱可能是一个null
值,还是空字符串或类似的东西?我想写一个测试,我需要一些关于它的提示.
Akka Cluster Client需要一个可以联系以便与集群联系的初始节点的列表。似乎必须提供至少一个确切的节点地址和端口。在由DC / OS管理的环境中,集群成员可以具有动态地址和端口关联。解决此问题的最佳方法是什么?集群客户端是否有像Akka Cluster Management这样的支持?
我注意到,该aggregate()
阶段似乎在序列化/反序列化每个元素,即使它定期发出结果。
streamBuilder
.stream(inputTopic, Consumed.`with`(keySerde, inputValueSerde))
.groupByKey(Serialized.`with`(keySerde, inputValueSerde))
.aggregate(
() => Snapshot.Initial(),
(_, event, prevSnap: Snapshot) => {
// ...
},
Materialized.as(stateStoreName).withValueSerde(snapshotSerde)
)
.toStream()
Run Code Online (Sandbox Code Playgroud)
我希望键值存储可以在内存中工作,直到提交提交为止。看起来不仅为每个更新进行写操作,而且还存在反序列化的读操作。有人可以解释一下这是如何工作的,如果我应该关注表现吗?
我想写一个丰富案例类的宏.当我声明我的案例类时:
case class User(int id, @tagged name)
我希望能够在Tree
这个只有注释的类中注入一些东西.到目前为止,我只能够达到Symbol
的封装类的,但看起来还不够(见尤金的答案在这里).我也不想使用弃用的api c.enclosingClass
.有没有办法ClassDef
在天堂2.1.0(Scala 2.11)达到父母?
scala ×3
akka ×1
akka-cluster ×1
apache-kafka ×1
charts ×1
d3.js ×1
redis ×1
rickshaw ×1
scala-cats ×1
scalaz ×1