模式与变量匹配

时间:2013-10-26 13:32:27

标签: pattern-matching sml stable-identifier

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

 val x = 2
 val m = (1, 2)
 case m of (_, valueOf(x)) => "same" 
         | (_, _)          => "different"

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

1 个答案:

答案 0 :(得分:4)

您可以使用case表达式中的变量和of表达式中的常量:

case (1, x) of (_, 2) => "same"
             | _ => "different"

标准ML中你不能做的是将两个变量相互匹配。这只会导致其中一个绑定到另一个的值(遮蔽其中一个变量的旧值)。您需要使用if表达式,或者在case表达式之前将比较绑定到它自己的值,如下所示:

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