@@ -5,18 +5,18 @@ import (
55 "iter"
66)
77
8- type Combined [T1 , T2 any ] struct {
9- First T1
10- Second T2
8+ type Joined [T1 , T2 any ] struct {
9+ Outer T1
10+ Inner T2
1111}
1212
1313func Join [OuterT , InnerT any , K comparable ](
1414 outer Iterable [OuterT ],
1515 inner Iterable [InnerT ],
1616 outerKeySelector func (OuterT ) K ,
1717 innerKeySelector func (InnerT ) K ,
18- ) Enumerable [* Combined [OuterT , InnerT ]] {
19- seq := func (yield func (* Combined [OuterT , InnerT ]) bool ) {
18+ ) Enumerable [* Joined [OuterT , InnerT ]] {
19+ seq := func (yield func (* Joined [OuterT , InnerT ]) bool ) {
2020 next , stop := iter .Pull (outer .Iter ())
2121 defer stop ()
2222 outerElem , ok := next ()
@@ -29,9 +29,9 @@ func Join[OuterT, InnerT any, K comparable](
2929 innerElems , hasAny := group [outerKeySelector (outerElem )]
3030 if hasAny {
3131 for _ , innerElem := range innerElems {
32- combined := & Combined [OuterT , InnerT ]{
33- First : outerElem ,
34- Second : innerElem ,
32+ combined := & Joined [OuterT , InnerT ]{
33+ Outer : outerElem ,
34+ Inner : innerElem ,
3535 }
3636 if ! yield (combined ) {
3737 return
@@ -52,8 +52,8 @@ func JoinAs[OuterT, InnerT any, K comparable, ResultT any](
5252 transformer func (OuterT , InnerT ) ResultT ,
5353) Enumerable [ResultT ] {
5454 joinedSeq := Join (outer , inner , outerKeySelector , innerKeySelector ).Iter ()
55- transformedSeq := goiter .Transform (joinedSeq , func (combined * Combined [OuterT , InnerT ]) ResultT {
56- return transformer (combined .First , combined .Second )
55+ transformedSeq := goiter .Transform (joinedSeq , func (combined * Joined [OuterT , InnerT ]) ResultT {
56+ return transformer (combined .Outer , combined .Inner )
5757 })
5858
5959 return NewEnumerator (transformedSeq )
@@ -64,8 +64,8 @@ func GroupJoin[OuterT, InnerT any, K comparable](
6464 inner Iterable [InnerT ],
6565 outerKeySelector func (OuterT ) K ,
6666 innerKeySelector func (InnerT ) K ,
67- ) Enumerable [* Combined [OuterT , Enumerable [InnerT ]]] {
68- seq := func (yield func (* Combined [OuterT , Enumerable [InnerT ]]) bool ) {
67+ ) Enumerable [* Joined [OuterT , Enumerable [InnerT ]]] {
68+ seq := func (yield func (joined * Joined [OuterT , Enumerable [InnerT ]]) bool ) {
6969 next , stop := iter .Pull (outer .Iter ())
7070 defer stop ()
7171 outerElem , ok := next ()
@@ -77,9 +77,9 @@ func GroupJoin[OuterT, InnerT any, K comparable](
7777 for ok {
7878 innerElems , hasAny := group [outerKeySelector (outerElem )]
7979 if hasAny {
80- combined := & Combined [OuterT , Enumerable [InnerT ]]{
81- First : outerElem ,
82- Second : NewEnumerator (goiter .SliceElem (innerElems )),
80+ combined := & Joined [OuterT , Enumerable [InnerT ]]{
81+ Outer : outerElem ,
82+ Inner : NewEnumerator (goiter .SliceElem (innerElems )),
8383 }
8484 if ! yield (combined ) {
8585 return
@@ -91,21 +91,6 @@ func GroupJoin[OuterT, InnerT any, K comparable](
9191 return NewEnumerator (seq )
9292}
9393
94- func GroupJoinAs [OuterT , InnerT any , K comparable , ResultT any ](
95- outer Iterable [OuterT ],
96- inner Iterable [InnerT ],
97- outerKeySelector func (OuterT ) K ,
98- innerKeySelector func (InnerT ) K ,
99- transformer func (OuterT , Enumerable [InnerT ]) ResultT ,
100- ) Enumerable [ResultT ] {
101- joinedSeq := GroupJoin (outer , inner , outerKeySelector , innerKeySelector ).Iter ()
102- transformedSeq := goiter .Transform (joinedSeq , func (combined * Combined [OuterT , Enumerable [InnerT ]]) ResultT {
103- return transformer (combined .First , combined .Second )
104- })
105-
106- return NewEnumerator (transformedSeq )
107- }
108-
10994func groupIterableToMap [T any , K comparable ](iterable Iterable [T ], keySelector func (T ) K ) map [any ][]T {
11095 m := map [any ][]T {}
11196 next , stop := iter .Pull (iterable .Iter ())
0 commit comments