Test a list with all and any predicates.

predicate-check `forall` is true when every element passes the test, and `exists` is true when at least one does. Their results combine into a single label.

Predicate Checks

limit
PredicateCheck.scala
Replay: real traced execution (multi-file project)
object Main {
  def main(args: Array[String]): Unit = {
    val limit = 2
    val nums = List(1, 2, 3, 4)
    val allBig = nums.forall(n => n > limit)
    val anyBig = nums.exists(n => n > limit)

    var label = "none"
    if (anyBig) {
      label = "some"
    }
    if (allBig) {
      label = "all"
    }

    println("allBig=" + allBig)
    println("anyBig=" + anyBig)
    println("label=" + label)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val limit = 0
    val nums = List(1, 2, 3, 4)
    val allBig = nums.forall(n => n > limit)
    val anyBig = nums.exists(n => n > limit)

    var label = "none"
    if (anyBig) {
      label = "some"
    }
    if (allBig) {
      label = "all"
    }

    println("allBig=" + allBig)
    println("anyBig=" + anyBig)
    println("label=" + label)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val limit = 5
    val nums = List(1, 2, 3, 4)
    val allBig = nums.forall(n => n > limit)
    val anyBig = nums.exists(n => n > limit)

    var label = "none"
    if (anyBig) {
      label = "some"
    }
    if (allBig) {
      label = "all"
    }

    println("allBig=" + allBig)
    println("anyBig=" + anyBig)
    println("label=" + label)
  }
}
  1. limit ← 2, nums ← List(1, 2, 3, 4), allBig ← false, anyBig ← true

    1object Main {2  def main(args: Array[String]): Unit = {3    val limit→ 2 = 2 //@limit=0, 54    val nums→ List(1, 2, 3, 4) = List(1, 2, 3, 4)5    val allBig→ false = numsList(1, 2, 3, 4).forall(n => n > limit)6    val anyBig→ true = numsList(1, 2, 3, 4).exists(n => n > limit)78    var label→ none = "none"9    if (anyBig) {10      label = "some"
  2. label ← some

    8var label = "none"9if (anyBigtrue) {10  label→ some = "some"11}12if (allBig) {
  3. println("allBig=" + allBig)

    16    println("allBig=" + allBigfalse)17    println("anyBig=" + anyBigtrue)18    println("label=" + labelsome)19  }20}
    outputallBig=false
    anyBig=true
    label=some
  1. limit ← 0, nums ← List(1, 2, 3, 4), allBig ← true, anyBig ← true

    1object Main {2  def main(args: Array[String]): Unit = {3    val limit→ 0 = 04    val nums→ List(1, 2, 3, 4) = List(1, 2, 3, 4)5    val allBig→ true = numsList(1, 2, 3, 4).forall(n => n > limit)6    val anyBig→ true = numsList(1, 2, 3, 4).exists(n => n > limit)78    var label→ none = "none"9    if (anyBig) {10      label = "some"
  2. label ← some

    8var label = "none"9if (anyBigtrue) {10  label→ some = "some"11}12if (allBig) {
  3. label ← all

    11}12if (allBigtrue) {13  label→ all = "all"14}
  4. println("allBig=" + allBig)

    16    println("allBig=" + allBigtrue)17    println("anyBig=" + anyBigtrue)18    println("label=" + labelall)19  }20}
    outputallBig=true
    anyBig=true
    label=all
  1. limit ← 5, nums ← List(1, 2, 3, 4), allBig ← false, anyBig ← false

    1object Main {2  def main(args: Array[String]): Unit = {3    val limit→ 5 = 54    val nums→ List(1, 2, 3, 4) = List(1, 2, 3, 4)5    val allBig→ false = numsList(1, 2, 3, 4).forall(n => n > limit)6    val anyBig→ false = numsList(1, 2, 3, 4).exists(n => n > limit)78    var label→ none = "none"9    if (anyBig) {10      label = "some"11    }12    if (allBig) {13      label = "all"14    }1516    println("allBig=" + allBigfalse)17    println("anyBig=" + anyBigfalse)18    println("label=" + labelnone)19  }20}
    outputallBig=false
    anyBig=false
    label=none