private IKind CheckFuncKindApp( IKind parameterKind, IKind returnKind, IKind argumentKind ) { if (!argumentKind.Equals(parameterKind)) { throw new ArgumentException( string.Format( "unexpected {0}, expected {1}", argumentKind.Show(), parameterKind.Show() ) ); } return returnKind; }
public IType CheckPolymorphicTypeApp( IKind parameterKind, IKind argumentKind, Unique parameter, IType body, IType argument ) { if (!argumentKind.Equals(parameterKind)) { throw new ArgumentException( string.Format( "unexpected {0}, expected {1}", argumentKind.Show(), parameterKind.Show() ) ); } return body.Eval(parameter, argument); }