underscore/unzip.go
Ruidy d6f1e1cff5
feat: add Tap, Transpose, Unzip, ParallelReduce, and Replicate
- Add Tap: for side effects/debugging in pipelines
- Add Transpose: flip matrix rows and columns
- Add Unzip: split tuple slice into two slices
- Add ParallelReduce: parallel reduction (experimental)
- Add Replicate: create n copies of a value

Comprehensive tests included for all functions.

Resolves Issues 21, 22, 23, 24, 25

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 14:55:43 +01:00

21 lines
462 B
Go

package underscore
// Unzip splits a slice of tuples into two separate slices.
// The inverse operation of Zip.
//
// Example: Unzip([Tuple{1,"a"}, Tuple{2,"b"}]) → ([1,2], ["a","b"])
func Unzip[L, R any](pairs []Tuple[L, R]) ([]L, []R) {
if len(pairs) == 0 {
return []L{}, []R{}
}
lefts := make([]L, len(pairs))
rights := make([]R, len(pairs))
for i, pair := range pairs {
lefts[i] = pair.Left
rights[i] = pair.Right
}
return lefts, rights
}