finished lab5

This commit is contained in:
Yadunand Prem
2022-10-06 10:33:11 +08:00
parent a99c9cefd2
commit 530ef6b71a
2 changed files with 48 additions and 37 deletions

View File

@@ -1,6 +1,6 @@
package cs2030s.fp;
public abstract class Actually<T> implements Immutatorable<T> {
public abstract class Actually<T> implements Immutatorable<T>, Actionable<T> {
public abstract T unwrap() throws Exception;
public abstract T except(Constant<? extends T> c);
@@ -9,7 +9,7 @@ public abstract class Actually<T> implements Immutatorable<T> {
public abstract T unless(T other);
public abstract <R> Actually<R> next(Immutator<Actually<R>, T> immutator);
public abstract <R> Actually<R> next(Immutator<Actually<R>, ? super T> immutator);
public static <T> Actually<T> ok(T value) {
return new Success<T>(value);
@@ -48,7 +48,7 @@ public abstract class Actually<T> implements Immutatorable<T> {
}
@Override
public <R> Actually<R> next(Immutator<Actually<R>, T> immutator) {
public <R> Actually<R> next(Immutator<Actually<R>, ? super T> immutator) {
try {
return immutator.invoke(this.value);
} catch (Exception e) {
@@ -65,6 +65,11 @@ public abstract class Actually<T> implements Immutatorable<T> {
}
}
@Override
public void act(Action<? super T> action) {
action.call(this.value);
}
@Override
public String toString() {
return "<" + value + ">";
@@ -112,7 +117,7 @@ public abstract class Actually<T> implements Immutatorable<T> {
}
@Override
public void finish(Action action) {
public void finish(Action<? super Object> action) {
return;
}
@@ -122,11 +127,17 @@ public abstract class Actually<T> implements Immutatorable<T> {
}
@Override
public <R> Actually<R> next(Immutator<Actually<R>, Object> immutator) {
public <R> Actually<R> next(Immutator<Actually<R>, ? super Object> immutator) {
return Actually.err(this.e);
}
@Override
public void act(Action<? super Object> action) {
// Do nothing
return;
}
@Override
public String toString() {
return "[" + e.getClass().getName() + "] " + e.getMessage();