Open JessyCatterwaul opened 2 years ago
With dictionaries, we have a uniquingKeysWith parameter. It would be helpful to have similar for uniqued.
uniquingKeysWith
uniqued
This came up in a Stack Overflow Q/A. The following works but relies on arrays—we should have something better in Algorithms.
Algorithms
import struct OrderedCollections.OrderedDictionary public extension Sequence { @inlinable func uniqued<Subject: Hashable>( on projection: (Element) throws -> Subject, uniquingWith combine: (Element, Element) throws -> Element ) rethrows -> [Element] { try OrderedDictionary(keyed(by: projection), uniquingKeysWith: combine) .values .elements } }
public extension Sequence { @inlinable func keyed<Key: Hashable>( by key: (Element) throws -> Key ) rethrows -> [KeyValuePairs<Key, Element>.Element] { try map { (try key($0), $0) } } }
With dictionaries, we have a
uniquingKeysWith
parameter. It would be helpful to have similar foruniqued
.This came up in a Stack Overflow Q/A. The following works but relies on arrays—we should have something better in
Algorithms
.