Custom Impementation of Higher Order function in Swift

Hari Krushna Sahu
1 min readJun 27, 2021

Guys frequently asked question in interview to implement own higher order function. so here is the implementation.

Map:

func myMap<T>(_ transform : (Element) throws -> T ) rethrows -> [T] {

var results = [T]()

for val in self {

results.append(try transform(val))

}

return results

}

CompactMap:

func myCompactMap<T>(_ transform : (Element) throws -> T?) rethrows -> [T] {

var results = [T]()

for val in self {

if let value = try transform(val) {

results.append(value)

}

}

return results

}

Filter:

func myFilter(_ isInclude: (Element) throws -> Bool) rethrows -> [Element] {

var results = [Element]()

for val in self {

if try isInclude(val) {

results.append(val)

}

}

return results

}

Reduce:

func myReduce<T>(_ initialResult: T, _ nextPartialResult: (T, Element) -> T) -> T {

var result = initialResult

for val in self {

result = nextPartialResult(result, val)

}

return result

}

--

--