Интересно. Кажется, что цитаты всегда хранятся в печатной форме.
Тип подвыражения <@@ 1 @@>
внутри кавычки всегда Expr<int>
. Однако тип переменной x
отличается в двух ваших цитатах:
match q1 with
| Patterns.Let(v, (Patterns.Quote(_) as q), _) when v.Type = typeof<Expr> -> "untyped"
| Patterns.Let(_, (Patterns.Quote(_) as q), _) -> "typed"
| _ -> "other"
Но я не уверен, как использовать это, чтобы различать два случая в целом. Кажется, что вы можете сделать это, только если посмотрите на контекст (а слишком много возможных контекстов ...)