@@ -101,7 +101,7 @@ object Test {
101
101
* @tparam B the element type of the resulting stream
102
102
* @return a new stream resulting from applying `f` in the `step` function of the input stream's producer.
103
103
*/
104
- private def mapRaw [A : Type , B : Type ](f : (A => (B => Expr [Unit ]) => Expr [Unit ]), stream : StagedStream [A ]): StagedStream [B ] = {
104
+ private def mapRaw [A , B ](f : (A => (B => Expr [Unit ]) => Expr [Unit ]), stream : StagedStream [A ]): StagedStream [B ] = {
105
105
stream match {
106
106
case Linear (producer) => {
107
107
val prod = new Producer [B ] {
@@ -194,7 +194,7 @@ object Test {
194
194
* @return the stream with the new producer. If the passed stream was linear, the new termination is added
195
195
* otherwise the new termination is propagated to all nested ones, recursively.
196
196
*/
197
- private def addTerminationCondition [A : Type ](condition : Expr [Boolean ] => Expr [Boolean ], stream : StagedStream [A ]): StagedStream [A ] = {
197
+ private def addTerminationCondition [A ](condition : Expr [Boolean ] => Expr [Boolean ], stream : StagedStream [A ]): StagedStream [A ] = {
198
198
def addToProducer [A ](f : Expr [Boolean ] => Expr [Boolean ], producer : Producer [A ]): Producer [A ] = {
199
199
producer.card match {
200
200
case Many =>
@@ -310,8 +310,8 @@ object Test {
310
310
case (Nested (producer1, nestf1), Linear (producer2)) =>
311
311
mapRaw[(B , Expr [A ]), (Expr [A ], B )]((t => k => ' { ~ k((t._2, t._1)) }), pushLinear[B , _, Expr [A ]](producer2, producer1, nestf1))
312
312
313
- case (Nested (producer1, nestf1), Nested (producer2, nestf2)) => ???
314
- // zipRaw[A, B](Linear(makeLinear(stream1)), stream2)
313
+ case (Nested (producer1, nestf1), Nested (producer2, nestf2)) =>
314
+ zipRaw[A , B ](Linear (makeLinear(stream1)), stream2)
315
315
}
316
316
}
317
317
@@ -403,7 +403,7 @@ object Test {
403
403
}
404
404
}
405
405
406
- private def pushLinear [A : Type , B , C : Type ](producer : Producer [A ], nestedProducer : Producer [B ], nestedf : (B => StagedStream [C ])): StagedStream [(A , C )] = {
406
+ private def pushLinear [A , B , C ](producer : Producer [A ], nestedProducer : Producer [B ], nestedf : (B => StagedStream [C ])): StagedStream [(A , C )] = {
407
407
val newProducer = new Producer [(Var [Boolean ], producer.St , B )] {
408
408
409
409
type St = (Var [Boolean ], producer.St , nestedProducer.St )
0 commit comments