Fork me on GitHub
#code-reviews
<
2020-09-24
>
jjttjj17:09:22

Transducers to bucket a sequence by some accumulate function and test condition of the accumulated result. Also another one to emit the current bucket on each new input. Any thoughts? I think I still have to figure out the transducer edge cases (like checking for reduced?) https://gist.github.com/jjttjj/c0acfb066c4d58bbb823501a9ffc0687

phronmophobic16:09:51

hopefully it's not too late for feedback: • the transducers in clojure.core use volatile! or ArrayList for state. see partition-all • the transducers that accumulate state (like partition-all implement the completion arity to flush the state at the end. in your examples, it looks like the last bucket doesn't make it to the output

phronmophobic16:09:53

personally, I would probably implement bucket as a composition of partition-by and map.

jjttjj16:09:22

Never too late for feedback 🙂 Yeah I'm aware of the arraylist/volitile thing. I assume those are mainly performance optimizations that I haven't need yet but would probably switch to at some point. The thing that makes partition-by insufficient is that the parts require accumulating state rather than just checking the single input. for example if I have a stream of integers and want to break them into partitions where the sum of each partition is 10.

phronmophobic16:09:18

ohhh, that makes sense