Transform a ready value in ordered steps.

then-transform Future-style `map` or `then` logic takes a ready value and computes the next value. Sequential scalar assignments make the transformation visible.

Then Transform

fetched
ThenTransform.scala
Replay: real traced execution (multi-file project)
object Main {
  def main(args: Array[String]): Unit = {
    val fetched = 8
    val plusOne = fetched + 1
    val doubled = plusOne * 2
    val label = "ready:" + doubled

    println("fetched=" + fetched)
    println("plusOne=" + plusOne)
    println("doubled=" + doubled)
    println("label=" + label)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val fetched = 3
    val plusOne = fetched + 1
    val doubled = plusOne * 2
    val label = "ready:" + doubled

    println("fetched=" + fetched)
    println("plusOne=" + plusOne)
    println("doubled=" + doubled)
    println("label=" + label)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val fetched = 12
    val plusOne = fetched + 1
    val doubled = plusOne * 2
    val label = "ready:" + doubled

    println("fetched=" + fetched)
    println("plusOne=" + plusOne)
    println("doubled=" + doubled)
    println("label=" + label)
  }
}
  1. fetched ← 8, plusOne ← 9, doubled ← 18, label ← ready:18

    1object Main {2  def main(args: Array[String]): Unit = {3    val fetched→ 8 = 8 //@fetched=3, 124    val plusOne→ 9 = fetched8 + 15    val doubled→ 18 = plusOne9 * 26    val label→ ready:18 = "ready:" + doubled1878    println("fetched=" + fetched8)9    println("plusOne=" + plusOne9)10    println("doubled=" + doubled18)11    println("label=" + labelready:18)12  }13}
    outputfetched=8
    plusOne=9
    doubled=18
    label=ready:18
  1. fetched ← 3, plusOne ← 4, doubled ← 8, label ← ready:8

    1object Main {2  def main(args: Array[String]): Unit = {3    val fetched→ 3 = 34    val plusOne→ 4 = fetched3 + 15    val doubled→ 8 = plusOne4 * 26    val label→ ready:8 = "ready:" + doubled878    println("fetched=" + fetched3)9    println("plusOne=" + plusOne4)10    println("doubled=" + doubled8)11    println("label=" + labelready:8)12  }13}
    outputfetched=3
    plusOne=4
    doubled=8
    label=ready:8
  1. fetched ← 12, plusOne ← 13, doubled ← 26, label ← ready:26

    1object Main {2  def main(args: Array[String]): Unit = {3    val fetched→ 12 = 124    val plusOne→ 13 = fetched12 + 15    val doubled→ 26 = plusOne13 * 26    val label→ ready:26 = "ready:" + doubled2678    println("fetched=" + fetched12)9    println("plusOne=" + plusOne13)10    println("doubled=" + doubled26)11    println("label=" + labelready:26)12  }13}
    outputfetched=12
    plusOne=13
    doubled=26
    label=ready:26