Skip to content

Instantly share code, notes, and snippets.

@werediver
Created July 15, 2016 12:51
Show Gist options
  • Save werediver/7ed6e03fe8776f027e0f3f9ce84dc4c6 to your computer and use it in GitHub Desktop.
Save werediver/7ed6e03fe8776f027e0f3f9ce84dc4c6 to your computer and use it in GitHub Desktop.
F# forward pipe operator in Swift
infix operator |> { precedence 95 associativity left }
infix operator <| { precedence 95 associativity right }
infix operator ?> { precedence 95 associativity left }
/// Forward pipe operator.
func |> <T, U>(arg: T, @noescape f: T -> U) -> U {
return f(arg)
}
/// Backward pipe operator.
func <| <T, U>(@noescape f: T -> U, arg: T) -> U {
return f(arg)
}
/// Forward pipe operator for optional argument.
func ?> <T, U>(arg: T?, @noescape f: T -> U) -> U? {
return arg.map(f)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment