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.monade;
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