0

我看不到 spray 的指令如何与continuation pass style (CPS)相对应。

更具体地说,延续是(在 Haskell 中),但是当使用喷射指令(其类型为where )时(a -> r) -> r,我找不到这种类型( )在哪里。(a -> r) -> rRoute->Routetype Route = RequestContext => Unit

也不相似Route->Route, 那么指令与CPS有什么关系呢?type Route = RequestContext => Unit(a -> r) -> r

有人可以展示喷雾的指令如何对应于延续传递风格吗?

4

1 回答 1

0

指令的最简单形式定义为

abstract class Directive[L <: HList] {
  def happly(f: L => Route): Route
}

这正是一个(a -> r) -> r. 您在喷雾指令文档中看到的是一个高级 DSL,它在后台构建Directive实例。你可以在Directive.scala中看到完整的定义

于 2016-10-24T12:26:22.567 回答