¿Alternativas a usar “var” para el estado con actores?

Me he encontrado usando vars bastante a menudo con actores akka para mantener el estado. Por ejemplo, si mi actor necesita mantener una lista de elementos, podría hacer algo como:

class ListActor extends Actor{
  var xs : List[Int] = List()

  def receive = {
    case x : Int => xs = x :: xs
  }
}

Usar la variable mutable parece ir en contra del espíritu de Scala. Alternativamente he usado esto:

class ListActor2 extends Actor{
  import context._

  def collect_ints(accu : List[Int]) : Receive = {
    case x : Int => become(collect_ints(x :: accu))
  }

  def receive = collect_ints(Nil)
}

Me gusta cómo se ve más, pero ¿tengo que preocuparme por el desbordamiento de la pila?

Soy consciente del rasgo FSM y lo he usado antes también, pero para algunas situaciones parece demasiado.

¿Cuál es la forma recomendada de mantener el estado simple? ¿Hay otras alternativas que desconozco?

Además, ¿es generalmente una mala señal si me encuentro que a menudo necesito variables mutables? ¿No estoy usando el modelo de actor correctamente?

Respuestas a la pregunta(3)

Su respuesta a la pregunta