Con la siguiente clase que se encuentra en un contexto CPS (@cps [Unidad]) ¿cómo implementaría Seq-trait? ¿Debo dejar los rasgos estándar como Seq a un lado y simplemente implementar map, flatmap y foreach en el contexto cps?Implementando Seq [T] para CPS-Classes
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]"
}
}
}
¿Mi pregunta es demasiado críptica? Para resumir: como todas las funciones que trabajan en un contexto CPS necesitan devolver un tipo anotado con cps [X], no puedo implementar ningún Rasgos/Interfaces estándar como Seq porque su firma carece de estas anotaciones @ cps. ¿Es esto correcto? – hotzen