Swiftz是一个Swift库,实现了函数式编程。
示例代码:
let xs = [1, 2, 0, 3, 4]// we can use the Min semigroup to find the minimal element in xssconcat(Min(), 2, xs) // 0// we can use the Sum monoid to find the sum of xsmconcat(Sum<Int8, NInt8>(i: { return nint8 }), xs) // 10// we can delay computations with futureslet x: Future<Int> = Future(exec: gcdExecutionContext, { sleep(1) return 4})x.result() == x.result() // true, returns in 1 second// we can map and flatMap over futuresx.map({ $0.description }).result() // "4", returns instantlyx.flatMap({ (x: Int) -> Future<Int> in return Future(exec: gcdExecutionContext, { sleep(1); return x + 1 })}).result() // sleeps another second, then returns 5
评论