xform: some thoughts on `take`
xform: some thoughts on `take`

Two unit tests are added here two

xform: fix `interleave` should check for `state_is_reduced`

At some point I thought that take might be broken before `reduce_nested`
assumes `!state_is_reduced(initial)`.  However that is fine, because
`reduce_nested` should only be called inside a transducer, and one can
assume that **before** calling the nested reducing function.  The test added
checks that everything works.

However, transducers that call the nested reducing function multiple
times should be careful.  Here is a fix for `interleave` that highlights
this problem

Note that `take(n)` assumes `n > 0`.  This is for performance, because
otherwise it would be a non deterministic transducer.

dodheim/atria,AbletonAG/atria,dodheim/atria,shaunstanislaus/atria,dodheim/atria,bowlofstew/atria,iankronquist/atria,shaunstanislaus/atria,Ableton/atria,lyrl/atria,bowlofstew/atria,iankronquist/atria,kod3r/atria,respu/atria,lyrl/atria,respu/atria,bowlofstew/atria,manashmndl/atria,lyrl/atria,manashmndl/atria,kod3r/atria,Ableton/atria,kod3r/atria,shaunstanislaus/atria,Ableton/atria,respu/atria,AbletonAG/atria,iankronquist/atria,AbletonAG/atria,manashmndl/atria