F# Design Patterns
我在Gene Belitski的优秀书中找到了这段代码:
let (| `` I'm active pattern `` |) x = x + 2
let (`` I'm active pattern `` y) = 40
(*
val ( |`` I'm active pattern ``| ) : x:int -> int
val y : int = 42
*)
作者承认这是
“如果您还记得值的 let 绑定是基于模式匹配的数据反汇编的极端情况,那么这个稍微令人难以置信的示例就会变得清晰,因此I'm active pattern
应用于输入参数 40 并将结果 42 绑定到 x。”
我不明白。I'm active pattern
鉴于 40 在右侧,为什么会应用于 40?直觉上,我猜 y = 38,而不是 42,将表达式let (`` I'm active pattern `` y) = 40
视为隐式函数。
谁能解释一下?