Formulæ library get updated with lazy combinations/2, permutations/2, and repeated_permutations/2 macros returning Stream.
Formulæ
combinations/2
permutations/2
repeated_permutations/2
Stream
I also blogged about how I have these macros implemented.