Изучаю скалу. Поскольку язык весьма декларативный, то логично ожидать от него автоматической векторизации всего что только можно и исполнения его на многочисленных ядрах современных процов. Такая фича действительно есть и как её можно увидеть?
Для примера взял такой код:
object ImpossiblePuzzle extends App {
val range = 1000
type XY = (Int, Int)
val step0 = for {
x <- 1 to range
y <- 1 to range
if 1 < x && x < y && x + y < range
} yield (x, y)
def sum(xy: XY) = xy._1 + xy._2
def prod(xy: XY) = xy._1 * xy._2
def sumEq(xy: XY) = step0 filter { sum(_) == sum(xy) }
def prodEq(xy: XY) = step0 filter { prod(_) == prod(xy) }
val step2 = step0 filter { sumEq(_) forall { prodEq(_).size != 1 }}
val step3 = step2 filter { prodEq(_).intersect(step2).size == 1 }
val step4 = step3 filter { sumEq(_).intersect(step3).size == 1 }
println(step4)
}
Отсюда: http://en.wikipedia.org/wiki/Sum_and_Product_Puzzle#Scala_code Но параллельного исполнения (в REPL) как-то не заметно. Как его получить?