有了CPS上下文(@cpsUnit)中的以下类,我将如何实现Seq-trait?我是否必须把像Seq这样的标准特性放在一边,只在cps-context中实现map、flatmap和foreach?
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]"
}
}
}发布于 2010-05-14 01:56:37
好的,据我所知,实现像Seq这样的接口/特征是不可能的。但是,当Scala将foreach语法循环重写为普通的for /map调用时,使用所需的cps注释来实现map和foreach是非常好的。filter & co应该也能正常工作。
然而,任何关于如何在cps上下文中实现特征的建议都是非常受欢迎的。
https://stackoverflow.com/questions/2667720
复制相似问题