Skip to content

Instantly share code, notes, and snippets.

@kazk
Created February 15, 2015 18:48
Show Gist options
  • Save kazk/5b47182e38d7a3458726 to your computer and use it in GitHub Desktop.
Save kazk/5b47182e38d7a3458726 to your computer and use it in GitHub Desktop.
// MARK: - Adjoin
public func adjoin<T,A,B>(a:(T)->A, b:(T)->B) -> (T)->(A,B) {
return {(x) in (a(x), b(x))}
}
public func adjoin<T,A,B,C>(a:(T)->A, b:(T)->B, c:(T)->C) -> (T)->(A,B,C) {
return {(x) in (a(x), b(x), c(x))}
}
public func adjoin<T,A,B,C,D>(a:(T)->A, b:(T)->B, c:(T)->C, d:(T)->D) -> (T)->(A,B,C,D) {
return {(x) in (a(x), b(x), c(x), d(x))}
}
public func adjoin<T,A,B,C,D,E>(a:(T)->A, b:(T)->B, c:(T)->C, d:(T)->D, e:(T)->E) -> (T)->(A,B,C,D,E) {
return {(x) in (a(x), b(x), c(x), d(x), e(x))}
}
public func adjoin<T,A,B,C,D,E,F>(a:(T)->A, b:(T)->B, c:(T)->C, d:(T)->D, e:(T)->E, f:(T)->F) -> (T)->(A,B,C,D,E,F) {
return {(x) in (a(x), b(x), c(x), d(x), e(x), f(x))}
}
public func adjoin<T,A,B,C,D,E,F,G>(a:(T)->A, b:(T)->B, c:(T)->C, d:(T)->D, e:(T)->E, f:(T)->F, g:(T)->G) -> (T)->(A,B,C,D,E,F,G) {
return {(x) in (a(x), b(x), c(x), d(x), e(x), f(x), g(x))}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment