@Kamil-Podlesak said in (are (arguments for (using lisp)) (still valid?)):
May I ask what is that trick?
Maybe calling a method on an expression of type dynamic, which dispatches at runtime according to the same rules as a static dispatch at compile time would use?
Inspect(object) compiles to this, for what it's worth.
if (<> o__5.<> p__0 == null)
{
<> o__5.<> p__0 = CallSite< Action<CallSite, UserQuery, object> >.Create(
Binder.InvokeMember(
CSharpBinderFlags.InvokeSimpleName | CSharpBinderFlags.ResultDiscarded,
"Inspect",
null,
typeof(UserQuery),
new CSharpArgumentInfo[2]
{
CSharpArgumentInfo.Create( CSharpArgumentInfoFlags.UseCompileTimeType, null ),
CSharpArgumentInfo.Create( CSharpArgumentInfoFlags.None, null )
}
)
);
}
<> o__5.<> p__0.Target(<> o__5.<> p__0, this, o);
PS: call Inspect with something which isn't a string or an int for a nice StackOverflowException.