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