Skip to content

Instantly share code, notes, and snippets.

Created September 10, 2016 00:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/aef0366b7f585762975939f69d315beb to your computer and use it in GitHub Desktop.
Save anonymous/aef0366b7f585762975939f69d315beb to your computer and use it in GitHub Desktop.
Result
func identity<T>(value: T) -> T {
return value
}
enum Result<T, E> {
case Success(T)
case Error(E)
func map<R>(f: (T) -> R) -> Result<R, E> {
return mapResult(success: f, failure: identity)
}
func mapError<R>(f: (E) -> R) -> Result<T, R> {
return mapResult(success: identity, failure: f)
}
func mapResult<RT, RE>(success success: (T) -> RT, failure: (E) -> RE) -> Result<RT, RE> {
switch self {
case let .Success(value): return .Success(success(value))
case let .Error(error): return .Error(failure(error))
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment