That is… damned nice. I choose not to feel that bad about it… for reasons.
On Fri, Dec 18, 2015 at 8:04 PM, Dave Abrahams <[email protected]> wrote: > > On Dec 18, 2015, at 4:35 AM, Al Skipp via swift-evolution < > [email protected]> wrote: > > On 18 Dec 2015, at 00:19, T.J. Usiyan via swift-evolution < > [email protected]> wrote: > > With a Cartesian Product type [like this]( > https://github.com/griotspeak/CartesianProduct), the for-in-where syntax > actually gets us to list comprehensions. I'll admit that I might not have > implemented the best Cartesian Product type possible, but it should > illustrate that we have what we need. > > `for case … in cartProd(cartProd(seq1, seq2), seq3) // An operator for > cartProd would make it more pleasing to read.` > > > That’s impressive work, but it strikes me as quite a difficult undertaking > to get there. (Is it just me, or are generators and sequences the most > scary part of Swift?) Also, is it possible to get it working as an > expression, or is it restricted to a ‘for’ statement? If it can only be > performed as a ‘for’ statement it will still need an external mutable var > to be updated outside of the loop. It’s fine if you want to just do > side-effecty things, like print the elements, but I’d consider the ability > to return a value to be more important. > > > This is a much simpler cartesian product implementation: > > seq1.flatMap { x in seq2.map { (x,$0) } } > > or, if you want speed, > > seq1*.lazy*.flatMap { x in seq2*.lazy*.map { (x,$0) } } > > HTH, > > -Dave > > > >
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
