Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,26 @@
|
|||
import Goto._
|
||||
import scala.util.continuations._
|
||||
|
||||
object Goto {
|
||||
|
||||
case class Label(k: Label => Unit)
|
||||
|
||||
private case class GotoThunk(label: Label) extends Throwable
|
||||
|
||||
def label: Label @suspendable =
|
||||
shift((k: Label => Unit) => executeFrom(Label(k)))
|
||||
|
||||
def goto(l: Label): Nothing =
|
||||
throw new GotoThunk(l)
|
||||
|
||||
private def executeFrom(label: Label): Unit = {
|
||||
val nextLabel = try {
|
||||
label.k(label)
|
||||
None
|
||||
} catch {
|
||||
case g: GotoThunk => Some(g.label)
|
||||
}
|
||||
if (nextLabel.isDefined) executeFrom(nextLabel.get)
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue