package com.babel17.interpreter.values;
public final class ConstructorValue extends Value{
public final static String NAME_SOME = "SOME";
public final static String NAME_NONE = "NONE";
public ConstructorValue(String name) {
this(name, VectorValue.EMPTY);
}
public boolean isNone() {
if (!name.equals(NAME_NONE)) return false;
Value v = value.force();
if (v instanceof SequenceValue)
return ((SequenceValue) v).isEmpty();
return false;
}
public Value isSome() {
if (name.equals(NAME_SOME))
return value;
else
return null;
}
// name must be UPPERCASE !
public ConstructorValue(String name, Value v) {
this.name = name;
this.value = v;
}
public String name() {
return name;
}
public Value parameter() {
return value;
}
private String name;
private Value value;
}