Skip to main content

Scala: Multi-core for loop

Two of the things that really attract me to Scala are its immutability and threading approaches. It seems to me that both of these make Scala a great candidate for multi-core and cloud-friendly constructs.

Here is what I developed to help me write a multi-threaded iterator (of course, these are only used when the order of execution for each element doesn't matter):



def fire[A,B](expanded:A=>B):Fire[A,B] = new Fire[A,B](expanded);

class Fire[A,B](val expanded:A=>B) {
def forall(list:Iterable[A]):Any = {
var caller = self;
list foreach {
el =>
actor {
caller ! expanded(el)
}
}

list map {
el =>
receive {
case result:B => doReceive(result)
}
}
}

protected def doReceive(result:B):Any = {

}

def andlisten[C](contracted:B=>C):FireAndListen[A,B,C] = new FireAndListen(expanded, contracted)
}

class FireAndListen[A,B,C](expanded:A=>B, contracted:B=>C) extends Fire[A,B](expanded) {
override def doReceive(result:B):C = contracted(result);
}



Thus, you get something that looks like this:


fire {
myVar:myType => myMethod(myVar1)
} andlisten { //optional
myVar2 => myMethod2(myVar2) // the type of myVar2 is the return of the previous method. If the return type is Unit, then this section is unnecessary
} forall myList


This is effectively the same as:


myList foreach {
myMethod2(myMethod(myVar1))
}


except that it performs better on multi-core computers.

Comments

Popular posts from this blog

How Many Teeth Does The Tooth Fairy Pick Up Each Night in Utah?

Somebody asked me a question about my Tooth Fairy post the other day that got me thinking. How many baby teeth are lost every day in Utah?

I began with Googling. Surely someone else has thought of this and run some numbers, right? Lo, there is a tooth fairy site that claims that the Tooth Fairy collects 300,000 teeth per night.

That's a lot; however, when I ran the numbers, it started to seem awfully low.

Let's assume that the Tooth Fairy collects all baby teeth regardless of quality and we assume that all children lose all their baby teeth. The world population of children sits at 2.2 billion, with 74.2 million of them in the United States. Of those, approximately 896,961 of them are in Utah. This means that somewhere around .04077% of the world's children are in Utah.

If we assume that kids in Utah lose teeth at the same rate as all other children in the world and that each day in the year is just as likely as the rest to lose a tooth, then we have that of the alleged …

Five Reasons Serving on the Athlos Board is Fun Right Now

About 18 months ago, a friend of mine, Bethany Zeyer, let me know about an open position on the Athlos Academy of Utah school board. I've always had a passion for education, and my kids' school seemed like a place where I could have a positive effect on the community.

Also, I'd just finished reading "The Smartest Kids in the World" by Amanda Ripley and, based on Amanda's advice, interviewed the school's director.

I was in the mood to contribute!


I applied and was accepted, and I've been serving on the board for a little over a year now.

Since then, I've learned a whole lot about how a school is run.

I've learned that someone needs to determine the school guidelines for pesticide usage.



And that someone needs to be thinking about the long-term future of the school, whether or not to increase grade capacity, whether or not to match the pay increases big school districts are giving, and most importantly, evaluate whether or not the school is achi…

Twas the Night Before Pi Day

Twas the Night Before Pi Day
by Joshua Cummings

Twas the night before Pi Day, when Archimedes, the muse,
Went to pay me a visit whilst I took a snooze.

I'd visions of carrot cake, candy, and cheese
When dashed open my window and entered a breeze
That stirred me to consciousness, albeit in time
To see my face plastered in pie of key lime.

And once I'd removed the fruit from my eyes
And put on my spectacles did I realize
That before me presented a most divine spectre
Who clearly possessed the Key Lime Projector.

"It's a fulcrum, you see!" he began to explain,
"All I use is this crank to cause the right strain,
"Then releasing its fetter it launches sky high
"The juiciest pie of key lime in your eye!"

I sat there immobile for what seemed a year,
As the spectre protested I his genius revere,
When clearly it came, the fine revelation,
Of his piety, honor, achievements, and station.
With his little old catapult, so lively and quick,
I knew in a moment that this must be …