The type inference picks a type that works for all outcomes of the ifexpression.
类型推断选择了一个满足if表达式所有结果的类型。
2
This case only succeeds if the accompanying guard expression (the ifexpression that follows it) succeeds, which will only happen for the first Person but not the second.
When this macro executes, it will match the my-ifexpression up to the template like this (in other words, matching a macro invocation to a macro definition pattern).