package nl.utwente.viskell.haskell.expr;
import nl.utwente.viskell.haskell.type.HaskellTypeError;
import nl.utwente.viskell.haskell.type.Type;
/**
* A variable that is locally bound, by for example a lambda
*/
public class LocalVar extends Variable {
/** The binder this variable is bound to */
private final Binder binder;
/**
* @param binder where this variable is bound to
*/
public LocalVar(Binder binder) {
super(binder.getUniqueName());
this.binder = binder;
}
@Override
public Type inferType() throws HaskellTypeError {
return binder.getBoundType();
}
@Override
public String toHaskell() {
return binder.getUniqueName();
}
@Override
public String toString() {
return binder.getBaseName();
}
}