Avec la classe suivante qui se trouve dans un contexte CPS (@cps [Unité]) comment implémenter le trait Seq? Dois-je laisser de côté les traits standard comme Seq et implémenter map, flatmap et foreach dans le contexte cps?Implémentation de Seq [T] pour les classes 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]"
}
}
}
Ma question est-elle trop cryptique? En résumé: Comme toutes les fonctions fonctionnant dans un contexte CPS doivent retourner un type annoté avec cps [X], je ne suis pas capable d'implémenter des Traits/Interfaces standards comme Seq parce que leur signature n'a pas ces @ cps-annotations. Est-ce correct? – hotzen