Swiftでカリー化してみた。


Swiftの勉強がてらカリー化を考えてみました。こんな感じかと。

curry.swift

func curry<T1,T2,T3>(_ f:@escaping (T1,T2) -> T3) -> (T1) -> (T2) -> T3 {

    func F(x:T1) -> (T2) -> T3 { return {(y:T2) in f(x,y)}}
    return F
}


let curryadd = curry((+) as (Int,Int) -> Int)
let add3 = curryadd(3)
add3(10)