7
在CPS上下文中具有以下类(@cps [Unit]),我将如何实现Seq特征? 我是否必须将Seq这样的标准特质放在一边,只是在cps-context中实现map,flatmap和foreach?为CPS类实现Seq [T]
class DataFlowVariable[T] {
def apply(): T @cps[Unit] = ...
}
class DataFlowStream[T] extends Seq[T] {
override def iterator: Iterator[T] = new Iterator[T] {
private val iter = queue.iterator
def hasNext: Boolean = iter.hasNext
def next: T = { // needed: next: T @cps[Unit] !
val dfvar = iter.next
// dfvar() // not possible as dvar.apply has type "T @cps[Unit]"
}
}
}
我的问题太神秘了吗?综上所述:由于所有在CPS-context中工作的函数都需要返回一个用cps [X]注释的类型,因此我无法实现像Seq这样的标准Traits/Interfaces,因为它们的签名缺少这些@ cps-annotations。它是否正确? – hotzen 2010-05-03 14:54:32