与变量的模式匹配

Sta*_*lin 1 sml pattern-matching stable-identifier

如何匹配变量值。所以,我想像这样写 smt

 val x = 2
 val m = (1, 2)
 case m of (_, valueOf(x)) => "same" 
         | (_, _)          => "different"
Run Code Online (Sandbox Code Playgroud)

我猜,它命名为稳定标识符。

Emi*_*röm 5

您可以在case表达式中使用变量,在表达式中使用常量of

case (1, x) of (_, 2) => "same"
             | _ => "different"
Run Code Online (Sandbox Code Playgroud)

在标准机器学习中你不能做的是对两个变量进行模式匹配。这只会导致其中一个绑定到另一个的值(隐藏其中一个变量的旧值)。您需要使用if表达式,或者在 case 表达式之前将比较绑定到它自己的值,如下所示:

let
 val cmp = fn (_, m2) => m2 = x
in
 case cmp m of true  => "same"
             | false => "different"
end
Run Code Online (Sandbox Code Playgroud)