Parallel Collection Work
List.parallel splits pure collection transformations across worker threads.
Pure Callbacks
The callback is pure, which prevents shared mutable state and I/O inside the parallel work.
parallel-callback.brp
items.parallel(
pure func(chunk): chunk.map(pure func(x): x * 2)
)List.parallel()
parallel hands the callback a ParallelList view with parallel-safe map, filter, and filter_map.
parallel.brp
items.parallel(
pure func(chunk): chunk.map(pure func(x): x * x)
)When It Helps
Use it for expensive per-element work, not tiny transforms where scheduling costs dominate.
expensive.brp
pure func expensive(n: Int) -> Int:
n * n + nCollecting Results
parallel returns an ordinary List after the scoped work completes.
collected.brp
results: List[Int] = transform(items)Example
parallel-chunks.brp
pure func expensive(n: Int) -> Int:
n * n + n
pure func transform(items: List[Int]) -> List[Int]:
items.parallel(pure func(chunk: ParallelList[Int]):
chunk.map(pure func(n): expensive(n))
)
pure func sum(items: List[Int]) -> Int:
var total: Int = 0
for item in items:
total += item
total
func main(args: List[String]) -> Void:
print(sum(transform([1, 2, 3, 4])).to_string())
Try It
terminal
blorp run parallel-chunks.brp