// // SequenceExtras.swift // SwresTools // extension Sequence { func firstSome(_ transform: @escaping (Iterator.Element) -> ElementOfResult?) -> ElementOfResult? { return self.lazy.flatMap(transform).first } func groupBy(_ transform: (Iterator.Element) -> ElementOfResult) -> Dictionary> { var groupedBy: Dictionary> = Dictionary() for item in self { let transformed = transform(item) if groupedBy[transformed] == nil { groupedBy[transformed] = Array() } groupedBy[transformed]!.append(item) } return groupedBy } }