diff --git a/akka-actor/src/main/scala/akka/actor/UntypedActor.scala b/akka-actor/src/main/scala/akka/actor/UntypedActor.scala index bf2208d960..dcf9fc7295 100644 --- a/akka-actor/src/main/scala/akka/actor/UntypedActor.scala +++ b/akka-actor/src/main/scala/akka/actor/UntypedActor.scala @@ -4,14 +4,8 @@ package akka.actor -import akka.dispatch._ -import akka.config.Supervision._ import akka.japi.{Creator, Procedure} -import java.net.InetSocketAddress - -import scala.reflect.BeanProperty - /** * Subclass this abstract class to create a MDB-style untyped actor. *
@@ -63,6 +57,7 @@ import scala.reflect.BeanProperty abstract class UntypedActor extends Actor { def getContext(): ActorRef = self + def context(): ActorRef = self final protected def receive = { case msg => onReceive(msg) @@ -88,4 +83,4 @@ abstract class UntypedActor extends Actor { * * @author Jonas Bonér */ -trait UntypedActorFactory extends Creator[Actor] \ No newline at end of file +trait UntypedActorFactory extends Creator[Actor] diff --git a/akka-tutorials/akka-tutorial-first/src/main/scala/Pi.scala b/akka-tutorials/akka-tutorial-first/src/main/scala/Pi.scala index 61a026d7d2..2733159445 100644 --- a/akka-tutorials/akka-tutorial-first/src/main/scala/Pi.scala +++ b/akka-tutorials/akka-tutorial-first/src/main/scala/Pi.scala @@ -13,6 +13,8 @@ import akka.dispatch.Dispatchers import System.{currentTimeMillis => now} import java.util.concurrent.CountDownLatch +import scala.annotation.tailrec + /** * First part in Akka tutorial. * @@ -57,6 +59,7 @@ object Pi extends App { class Worker() extends Actor { // define the work +/* // FIXME tail-recursive fun instead val calculatePiFor = (arg: Int, nrOfElements: Int) => { val range = (arg * nrOfElements) to ((arg + 1) * nrOfElements - 1) @@ -66,6 +69,15 @@ object Pi extends App { // Use this for more functional style but is twice as slow // range.foldLeft(0.0D)( (acc, i) => acc + 4 * math.pow(-1, i) / (2 * i + 1) ) } +*/ + def calculatePiFor(arg: Int, nrOfElements: Int): Double = { + val end = (arg + 1) * nrOfElements - 1 + @tailrec def doCalculatePiFor(cursor: Int, acc: Double): Double = { + if (end == cursor) acc + else doCalculatePiFor(cursor + 1, acc + (4 * math.pow(-1, cursor) / (2 * cursor + 1))) + } + doCalculatePiFor(arg * nrOfElements, 0.0D) + } def receive = { case Work(arg, nrOfElements) =>