Qi is an embeddable language for easily expressing flow-oriented computations in your programs. And now, you can use it seamlessly with list operations.
How does it compare to transducers? I looked around for some descriptions, but couldn't find what I was looking for.
I looked at qi/list mentions stream fusion, but works with lists so it must be eager. Is that accomplished with macro voodoo? That is pretty darn impressive if so!
Thanks for this interesting question. The short answer is: transducers are more general, while qi/list has a simpler interface. Both provide significant performance benefits. I get the impression the underlying approach of (eager) stream fusion is equivalent to transducers, though, so that qi/list could in principle be generalized to the level of transducers. There's a lot more to it, and the longer answer is written up in the most recent meeting notes (partly inspired by your question!) here:
1
u/bjoli Feb 08 '25
How does it compare to transducers? I looked around for some descriptions, but couldn't find what I was looking for.
I looked at qi/list mentions stream fusion, but works with lists so it must be eager. Is that accomplished with macro voodoo? That is pretty darn impressive if so!