Scalaの関数型ライブラリCatsには便利な機能が色々と生えていますが、その中でもparTupledを利用すると複数のリストを各要素ごとのタプルのリストに変換できます。
0
Windymelt(めるくん)🚀❤️‍🔥さんと他1000人 @windymelt

はてなブログに投稿しました Scalaで複数のリストをzipするならlazyZipがおすすめ(きれいに収まる) - Lambdaカクテル blog.3qe.us/entry/2024/03/… #はてなブログ

2024-03-01 22:52:31
import cats.implicits._
import cats.syntax.all._
val xs = List(1,2,3)
val ys = xs
val zs = xs
(xs, ys, zs).parMapN((x, y, z) => (x, y, z))
// => List((1,1,1), (2,2,2), (3,3,3))
Windymelt(めるくん)🚀❤️‍🔥さんと他1000人 @windymelt

(xs, ys, zs).parMapN((x, y, z) ⇒ (x, y, z))をもうちょっとシュッと書けたりしないかなあ。

2024-03-05 21:53:35
import cats.implicits._
import cats.syntax.all._
val xs = List(1,2,3)
val ys = xs
val zs = xs
(xs, ys, zs).tupled
// => List((1,1,1), (1,1,2), (1,1,3), (1,2,1), (1,2,2), ...)
Windymelt(めるくん)🚀❤️‍🔥さんと他1000人 @windymelt

@Kory__3 試したけど想定とは違う形になっちゃった!!(デカルト咳的に全組み合わせになっちゃう)

2024-03-05 22:16:50
Kory @Kory__3

@windymelt アー `Parallel` に対する操作か~ (parMapN の par が見えてなかった)

2024-03-05 22:17:31
import cats.implicits._
import cats.syntax.all._
val xs = List(1,2,3)
val ys = xs
val zs = xs
(xs, ys, zs).parTupled
// => List((1,1,1), (2,2,2), (3,3,3))
Kory @Kory__3

Parallel 型クラス、ンーと思う点もちょっとあるけど実用上めちゃめちゃ便利なので全人類に届いて欲しい

2024-03-05 22:24:37

作者のオススメ