В разделе 23.5 «Программирование на Scala» я читал, что операции map, flatMap и filter всегда можно преобразовать в for-complation и наоборот.
Нам дана следующая эквивалентность:
def map[A, B](xs: List[A], f: A => B): List[B] =
for (x <- xs) yield f(x)
У меня есть значение, рассчитанное на основе серии операций с картой:
val r = (1 to 100).map{ i => (1 to 100).map{i % _ == 0} }
.map{ _.foldLeft(false)(_^_) }
.map{ case true => "open"; case _ => "closed" }
Мне интересно, как это будет выглядеть для понимания. Как мне это перевести?
(Если это поможет, на словах это:
- взять целые числа от 1 до 100
- для каждого создайте список из 100 логических значений
- сворачиваем каждый список с помощью оператора XOR обратно в логическое
- вывести список из 100 строк "открытых" или "закрытых" в зависимости от логического
Я полагаю, что существует стандартный способ перевода операций с картой, и детали фактических функций в них не важны. Хотя я мог ошибаться.)