PointFree

Guowei Lv

1 minute read

I’m starting a new series, mostly just me taking notes while I go through the PointFree videos. The pipe operator The |> operator is defined as: precedencegroup ForwardApplication { associativity: left } infix operator |>: ForwardApplication func |> <A, B>(x: A, f: (A) -> B) -> B { return f(x) } It can be used as:: func incr(_ x: Int) -> Int { return x + 1 } func square(_ x: Int) -> Int { return x * x } 2 |> incr |> square Function composition operator This operator is defined as: precedencegroup ForwardComposition { higherThan: ForwardApplication associativity: left } infix operator >>>: ForwardComposition func >>> <A, B, C>(_ f: @escaping (A) -> B, _ g: @escaping (B) -> C) -> ((A) -> C) { return { a in g(f(a)) } }