Skip to content
Snippets Groups Projects

Resolve "Java monades code"

Merged Colin DAMON requested to merge 111-java-monades-code into master
9 files
+ 188
0
Compare changes
  • Side-by-side
  • Inline
Files
9
 
package fr.ippon.monad;
 
 
import java.util.Optional;
 
import java.util.function.Function;
 
 
public class Maybe<T> {
 
 
private final Optional<T> value;
 
 
private Maybe(Optional<T> value) {
 
this.value = value;
 
}
 
 
public static <T> Maybe<T> pure(T value) {
 
return new Maybe<>(Optional.of(value));
 
}
 
 
public static <T> Maybe<T> fail() {
 
return new Maybe<>(Optional.empty());
 
}
 
 
public <U> Maybe<U> map(Function<T, U> mapper) {
 
return new Maybe<>(value.map(mapper));
 
}
 
 
public <U> Maybe<U> bind(Function<T, Maybe<U>> other) {
 
return value.map(other)
 
.orElse(Maybe.fail());
 
}
 
 
@Override
 
public String toString() {
 
return value.toString();
 
}
 
}
Loading