package code.type.visitor;

import code.type.TypeConstructor;
import code.type.TypeVariable;
import code.type.FunctionType;
import code.type.TypeConstructorApplication;

/**
 * A Type Visitor
 *
 * @author amey
 * @since October 2, 2002
 */
public interface TypeVisitor<R,T> {

    R visit(TypeConstructor tc, T arg);

    R visit(TypeVariable tv, T arg);

    R visit(FunctionType t, T arg);

    R visit(TypeConstructorApplication t, T arg);

}

