Scala object-function balance
Some improvements:


Try to minimize all mutable state and side effecting methods to single places. Don't divide them through the whole program.
Scala is object oriented. Therefore use methods of the objects you want to work with instead of global functions.
use methods with an empty parameter list only if these methods has side effects.
search the API for methods you can work with.


That's what I came up with:

object Game {

  import util.Random

  val rand: Random = new Random
  val mutations: Seq[Int =&gt; Int] = Seq(x =&gt; x, x =&gt; x + x, x =&gt; x * x)

  case class Cell(f: Int =&gt; Int, value: Int) {
    def mutate = {
      def nextMutation: Int =&gt; Int =
        mutations(((mutations indexOf f) + 1) % mutations.size)
      Cell(nextMutation, f(value))
    }

    override def toString = "["+value+"]"
  }

  case class Breed(generation: Int, cells: Seq[Cell]) {
    def mutate: Breed =
      Breed(generation + 1, cells map { _.mutate })

    override def toString: String =
      "BREED: ["+generation+"] = "+cells.mkString
  }

  def makeCells(num: Int) = {
    def randomMutation =
      mutations(rand nextInt mutations.size)

    def makeCell =
      Cell(randomMutation, (rand nextInt 10))

    (Seq fill num) { makeCell }
  }

  def test() {
    val firstBreed = Breed(0, makeCells(10))
    val breeds = ((1 to 10).iterator scanLeft firstBreed) {
      (b, _) =&gt; b.mutate
    }
    printBreeds(breeds)
  }

  def printBreeds(breeds: Iterator[Breed]) {
    (breeds sliding 2) foreach {
      case Seq(b, mutated) =&gt;
        println("BREED: size="+b.cells.size)
        println(b+" ---&gt; "+mutated)
    }
  }

}