fj.Bottom Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of functionaljava Show documentation
Show all versions of functionaljava Show documentation
Functional Java is an open source library that supports closures for the Java programming language
package fj;
/**
* Represents the bottom _|_ value.
*
* @version %build.number%
*/
public final class Bottom {
private Bottom() {
throw new UnsupportedOperationException();
}
/**
* Returns an error to represent undefinedness in a computation.
*
* @return An error to represent undefinedness in a computation.
*/
public static Error undefined() {
return error("undefined");
}
/**
* Returns an error to represent undefinedness in a computation with early failure using the given
* message.
*
* @param s The message to fail with.
* @return An error to represent undefinedness in a computation with early failure using the given
* message.
*/
public static Error error(final String s) {
throw new Error(s);
}
/**
* Provides a thunk that throws an error using the given message when evaluated.
*
* @param s The message to fail with.
* @return A thunk that throws an error using the given message when evaluated.
*/
public static P1 error_(final String s) {
return P.lazy(() -> {
throw new Error(s);
});
}
/**
* Provides a function that throws an error using the given message, ignoring its argument.
*
* @param s The message to fail with.
* @return A function that throws an error using the given message, ignoring its argument.
*/
public static F errorF(final String s) {
return a -> {
throw new Error(s);
};
}
/**
* Represents a deconstruction failure that was non-exhaustive.
*
* @param a The value being deconstructed.
* @param sa The rendering for the value being deconstructed.
* @return A deconstruction failure that was non-exhaustive.
*/
public static Error decons(final A a, final Show sa) {
return error("Deconstruction failure on type " + a.getClass() + " with value " + sa.show(a).toString());
}
/**
* Represents a deconstruction failure that was non-exhaustive.
*
* @param c The type being deconstructed.
* @return A deconstruction failure that was non-exhaustive.
*/
@SuppressWarnings("UnnecessaryFullyQualifiedName")
public static Error decons(final java.lang.Class c) {
return error("Deconstruction failure on type " + c);
}
/**
* A function that returns the toString
for a throwable.
*
* @return A function that returns the toString
for a throwable.
*/
public static F eToString() {
return Throwable::toString;
}
/**
* A function that returns the getMessage
for a throwable.
*
* @return A function that returns the getMessage
for a throwable.
*/
public static F eMessage() {
return Throwable::getMessage;
}
}