在尝试学习Ocaml和函数式语言时,我一直在研究模式匹配.我正在阅读这份文档,并决定为自己尝试以下练习:
创建一个表达式,计算true输入整数4元组的时间,使得4元组中的每个元素相等.
(4,4,4,4) - > true
(4,2,4,4) - > false
我发现做模式匹配对于元素值的特异性来说并不明显.这是我写的代码.
let sqr x = match x with
(a, a, a, a) -> true
| (_, _, _, _) -> false ;;
Run Code Online (Sandbox Code Playgroud)
当然,此代码会引发以下错误:
Error: Variable a is bound several times in this matching
我怎么能不仅强制执行x是一个4元组,还有严格的整数相等?
(当然,"正方形"元组不应该允许非正整数,但我现在更关心上述问题).`