hydra.mantle.FunctionVariant Maven / Gradle / Ivy
package hydra.mantle;
import java.io.Serializable;
/**
* The identifier of a function constructor
*/
public abstract class FunctionVariant implements Serializable {
public static final hydra.core.Name NAME = new hydra.core.Name("hydra/mantle.FunctionVariant");
private FunctionVariant () {
}
public abstract R accept(Visitor visitor) ;
public interface Visitor {
R visit(Elimination instance) ;
R visit(Lambda instance) ;
R visit(Primitive instance) ;
}
public interface PartialVisitor extends Visitor {
default R otherwise(FunctionVariant instance) {
throw new IllegalStateException("Non-exhaustive patterns when matching: " + (instance));
}
default R visit(Elimination instance) {
return otherwise((instance));
}
default R visit(Lambda instance) {
return otherwise((instance));
}
default R visit(Primitive instance) {
return otherwise((instance));
}
}
public static final class Elimination extends hydra.mantle.FunctionVariant implements Serializable {
public Elimination () {
}
@Override
public boolean equals(Object other) {
if (!(other instanceof Elimination)) {
return false;
}
Elimination o = (Elimination) (other);
return true;
}
@Override
public int hashCode() {
return 0;
}
@Override
public R accept(Visitor visitor) {
return visitor.visit(this);
}
}
public static final class Lambda extends hydra.mantle.FunctionVariant implements Serializable {
public Lambda () {
}
@Override
public boolean equals(Object other) {
if (!(other instanceof Lambda)) {
return false;
}
Lambda o = (Lambda) (other);
return true;
}
@Override
public int hashCode() {
return 0;
}
@Override
public R accept(Visitor visitor) {
return visitor.visit(this);
}
}
public static final class Primitive extends hydra.mantle.FunctionVariant implements Serializable {
public Primitive () {
}
@Override
public boolean equals(Object other) {
if (!(other instanceof Primitive)) {
return false;
}
Primitive o = (Primitive) (other);
return true;
}
@Override
public int hashCode() {
return 0;
}
@Override
public R accept(Visitor visitor) {
return visitor.visit(this);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy