package nl.utwente.viskell.haskell.expr;
import nl.utwente.viskell.haskell.env.FunctionInfo;
import nl.utwente.viskell.haskell.type.HaskellTypeError;
import nl.utwente.viskell.haskell.type.Type;
/*
* A variable referring to known function
*/
public class FunVar extends Variable {
/**
* The information about the function being used.
*/
private final FunctionInfo funInfo;
/**
* @param funInfo The information about the function being used.
*/
public FunVar(FunctionInfo funInfo) {
super(funInfo.getDisplayName());
this.funInfo = funInfo;
}
@Override
public Type inferType() throws HaskellTypeError {
return this.funInfo.getFreshSignature();
}
@Override
public String toString() {
return this.name;
}
@Override
public String toHaskell() {
return funInfo.getName();
}
}