【发布时间】:2017-05-17 00:14:12
【问题描述】:
我对 SML 中的模式匹配有疑问。在“Programming Language Pragmatics(第二版)”一书中,我读到在 SML 中,当您在函数中使用模式匹配时,同一个变量不能出现多次。解释是模式匹配用于检查函数是否可以在定义的模式中找到,而不是检查变量是否相互关联。但这让我很困惑:为什么不能实施这样的事情? 这是一个例子:
fun Eq nil = false
| Eq (e) = false
| Eq x::x::resto = true //Error
| Eq x::y::resto = false
这段代码检查列表的前两个元素是否相等。 那么,为什么第三行代码是错误的呢?谢谢。
【问题讨论】:
-
它可以实现,但它不在 SML 中(原因我不知道)。有些语言可以满足您的需求,例如 Erlang。 gist.github.com/igstan/ac1d10e6d1b575278fd6e2a3b65ce437
标签: pattern-matching sml