public override Type RemoveRigids(Dictionary <TypeVariable, TypeVariable> dict) { var inner = Inner.RemoveRigids(dict); // C# lacks return value covariance (unlike Java), so an explicit cast is needed return(new TypeScheme( new HashSet <TypeVariable>(Arguments.Select(x => (TypeVariable)x.RemoveRigids(dict))), inner )); }
public override Type RemoveRigids(Dictionary <TypeVariable, TypeVariable> dict) { return(new FunctionType(Argument.RemoveRigids(dict), Result.RemoveRigids(dict))); }