implement a take() transducer and make reduced() work everywhere