object rpn with Application {
  val stack = new scala.collection.mutable.Stack[double];

  def pop = { val tmp = stack top; stack pop; tmp }

  def apply_op(op: (double, double) => double)
    = { val second = pop; stack push op(pop, second) }

  while(true) {
    Console.readLine split(" ") foreach( (token) => {
      token match {
        case "+" => apply_op((x, y) => x + y);
        case "-" => apply_op((x, y) => x - y);
        case "*" => apply_op((x, y) => x * y);
        case "/" => apply_op((x, y) => x / y);
        case _ => stack.push(java.lang.Double.parseDouble(token));
      }
    });
   
    Console.println(stack.top); 
  }
}

