I'm still thinking about how to implement
Condition with anonymous patterns. And now I think I've found a way to implement it, but again, a suspected unclear documentation blocked me......
It's said in documentation that:
HoldPattern[expr]is equivalent to expr for pattern matching, but maintains expr in an unevaluated form.
But in this example, I simply adds a
HoldPattern to the original okay pattern, then it generates a message and stop evaluation:
A seires of
$--an integer--is returned
Pattern: First element in pattern
Pattern[Evaluate[x=Unique],_]is not a valid pattern name.
It seems that
HoldPattern didn't really hold the pattern all the time, or else it won't say those Pattern stuff is invalid because when actually evaluating, the
x=Unique will evaluate first then everything will be fine.
Is this yet another unclear explanation in documentation or it's my mis-implementation of
And are there anyway I can solve this problem?
Some further explanation
I found out that though we cannot easily use anonymous pattern with
Condition directly, we can create some single use symbol using
Unique and then use them as names used in
Condition. This will be identical as anonymous
Condition, right~ But one crucial thing is to let
Unique run again and again in multiple matches instead of calculating only once and leave there.
HoldPattern is designed for this job as it will surpress calculation in the first place and rerun each time pattern matcher want to check a match. But it seems that
HoldPattern did something when nothing should be done, probably something like pre-processing, which result in this situation.