val it : Expression =
new Tuple`2(1, 1) {Arguments = seq [1; 1];
CanReduce = false;
Constructor = Void .ctor(Int32, Int32);
Members = null;
NodeType = New;
Type = System.Tuple`2[System.Int32,System.Int32];}
let f (struct(a,b)) = (a,b)
FSharp.Linq.RuntimeHelpers.LeafExpressionConverter.QuotationToExpression(<@f struct(1,1)@>)
> System.ArgumentException: Expression of type 'System.Tuple`2[System.Int32,System.Int32]' cannot be used for parameter of type 'System.ValueTuple`2[System.Int32,System.Int32]' of method 'System.Tuple`2[System.Int32,System.Int32] f[Int32,Int32](System.ValueTuple`2[System.Int32,System.Int32])'
at System.Linq.Expressions.Expression.ValidateOneArgument(MethodBase method, ExpressionType nodeKind, Expression arg, ParameterInfo pi)
at System.Linq.Expressions.Expression.ValidateArgumentTypes(MethodBase method, ExpressionType nodeKind, ReadOnlyCollection`1& arguments)
at System.Linq.Expressions.Expression.Call(Expression instance, MethodInfo method, IEnumerable`1 arguments)
at Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter.ConvExprToLinqInContext(ConvEnv env, FSharpExpr inp)
at <StartupCode$FSI_0019>.$FSI_0019.main@()
Stopped due to error
https://github.com/Microsoft/visualfsharp/blob/0058f88769ab1585c131680eb94a33cf37a71438/src/fsharp/FSharp.Core/Linq.fs#L748-L757
For example
outputs
So things like
raises the exception