Skip to content

Instantly share code, notes, and snippets.

@oisdk
Created June 11, 2015 15:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oisdk/96bc711a412f6382122f to your computer and use it in GitHub Desktop.
Save oisdk/96bc711a412f6382122f to your computer and use it in GitHub Desktop.
extension SequenceType where Generator.Element: SequenceType {
var everyOf: [[Generator.Element.Generator.Element]] {
var seqGen = self.generate()
return seqGen.next().map {
let fSeq = Array($0)
return AnySequence{seqGen}.everyOf.flatMap {
lSeq in fSeq.map{ [$0] + lSeq }
}
} ?? [[]]
}
}
extension SequenceType where Generator.Element: CollectionType {
var everyOf: [[Generator.Element.Generator.Element]] {
var seqGen = self.generate()
return seqGen.next().map {
fSeq in AnySequence{seqGen}.everyOf.flatMap {
lSeq in fSeq.map{ [$0] + lSeq }
}
} ?? [[]]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment