anchor.diff:     module [Module] mkReducePipe (PipeOutConstructor#(Tuple2#(a,a), a) combinepipe,
   				 PipeOut#(Vector#(1,a)) inpipe,
   				 PipeOut#(a) ifc);
  -      let pipe <- mkMap(head, inpipe);
  +      let pipe = mapPipe(head, inpipe);
         return pipe;
  +   endmodule
  +   module [Module] mkReducePipes (PipeOutConstructor#(Tuple2#(a,a), a) combinepipe,
  +				  Vector#(1,PipeOut#(a)) inpipes,
  +				  PipeOut#(a) ifc);
  +      return inpipes[0];
      endmodule
   endinstance
   instance ReducePipe#(2, a);
  
positive.code:       PipeOut#(a) p0 <- mkReducePipe(combinepipe, inpipe0);
        PipeOut#(a) p1 <- mkReducePipe(combinepipe, inpipe1);
  
        PipeOut#(Tuple2#(a,a)) tplpipe = (interface PipeOut;
  					method Tuple2#(a,a) first(); return tuple2(p0.first, p1.first); endmethod
  					method Action deq();
  					   p0.deq();
  					   p1.deq();
  					endmethod
  					method notEmpty(); return p0.notEmpty() && p1.notEmpty(); endmethod
  					endinterface);
        PipeOut#(a) outpipe <- combinepipe(tplpipe);
        return outpipe;
     endmodule
  
  
negative.code: 				 PipeOut#(Vector#(2,a)) inpipe,
  				 PipeOut#(a) ifc);
        function Tuple2#(a,a) foo(Vector#(2,a) invec); return tuple2(invec[0], invec[1]); endfunction
        PipeOut#(Tuple2#(a,a)) zippipe = mapPipe(foo, inpipe);
        let pipe <- combinepipe(zippipe);
        return pipe;
     endmodule
     module [Module] mkReducePipes (PipeOutConstructor#(Tuple2#(a,a), a) combinepipe,
  				  Vector#(2,PipeOut#(a)) inpipes,
  				  PipeOut#(a) ifc);
        let pipe <- combinepipe(zipPipeOut(inpipes[0], inpipes[1]));
        return pipe;
     endmodule
  endinstance
  