Named patterns
The F# compiler performs a certain analysis when a name (identifier) occurs in the position of a pattern case. Strictly speaking, there are some opportunities for the name to be as follows:
A named literal (such as THREE in the earlier script)
A case value of a discriminated union (such as
None
if matching an F#option
)A type of an exception (such as
System.ArgumentException
if matching an exception type)A custom name of an active pattern (which will be covered in the upcoming chapters)
If the name occurrence does not fit any of the previously listed alternatives, the name is considered a variable pattern (https://msdn.microsoft.com/en-us/library/dd547125.aspx
). It is treated similarly to the wildcard pattern, getting the value of comparison-expression
parameter, which can be used in the corresponding result-expression
. Sounds confusing, right? Then let's turn to a sample in order to make this matter clear.
I just took the definition of the transformA
function from the matching...