在"Programming F#"中,我遇到了像这样的模式匹配(我简化了一下):
let rec len list =
match list with
| [] -> 0
| [_] -> 1
| head :: tail -> 1 + len tail;;
Run Code Online (Sandbox Code Playgroud)
实际上,我知道最后一个匹配识别列表的头部和尾部.从概念上讲,我不明白为什么它有效.据我所知,::是cons运算符,它在列表的头部位置附加一个值,但它并不像我在这里被用作运算符.我应该将其理解为列表的"特殊语法",其中::根据上下文被解释为运算符或"匹配模式"吗?或者可以使用其他运算符为列表以外的类型扩展相同的想法?