在「編程F#」我遇到這樣一個模式匹配來了(我簡化了一下):理解模式與利弊運營商匹配
let rec len list =
match list with
| [] -> 0
| [_] -> 1
| head :: tail -> 1 + len tail;;
實際上,據我所知,在最後一次匹配識別頭名單的尾巴。從概念上講,我不明白它爲什麼起作用。據我所知,::是cons運算符,它在列表的頭部位置附加一個值,但它在我看來並不像它在這裏被用作操作符。我應該將它理解爲列表的「特殊語法」,其中::根據上下文將其解釋爲運算符或「匹配模式」?或者,對於其他運營商而言,是否可以將相同的想法擴展到列表以外的類型?
謝謝,你關於::是一個特殊構造的觀點正是我不清楚的。我嘗試了使用其他運算符來匹配「相同」方式的模式匹配,但它沒有多少意義,我沒有任何地方,這讓我不知道有什麼缺點。 – Mathias 2010-05-17 17:55:58
請注意,對於元組也是如此 - 您可以使用(,)模式構建和匹配/解壓縮元組,以及其他類型(Some()/ None)等等。 – Benjol 2010-05-18 08:34:26
下面是[所有支持模式類型](https://docs.microsoft.com/zh-cn/dotnet/articles/fsharp/language-reference/pattern-matching)與示例。 – JanDotNet 2017-02-12 12:39:34