Avendo la seguente classe che si trova in un contesto CPS (@cps [Unità]) come implementare il Seq-trait? Devo lasciare i tratti standard come Seq a parte e solo implementare map, flatmap e foreach nel cps-context?Implementazione del Seq [T] per le classi CPS
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]"
}
}
}
La mia domanda è troppo criptica? Per riassumere: poiché tutte le funzioni che funzionano in un contesto CPS devono restituire un tipo annotato con cps [X], non sono in grado di implementare alcun tratto/interfaccia standard come Seq perché la loro firma manca di queste annotazioni @ cps. È corretto? – hotzen