継続モナド
継続モナドはSwiftで段階的に作れる。
1. まず継続渡しの関数を作る。
func getA(complete:(String)->Void) { complete("X") }
2. 継続渡しの関数を引数にとるクラスを作る。
typealias Func<T> = (T)->Void public struct RDFuture<T> { public var f:(Func<T>)->() public func result(_ complete:(T) -> Void) -> Void { f(complete) } init(_ f:@escaping (Func<T>)->()) { self.f = f } }
これで骨組みはできた。
このように使う
func test() { let f = RDFuture(getA) f.result { print($0) } }
これに、bind的な実装をつけることになる。