let minus = function
| Int.min_value, _ | Int.max_value, _ | _, Int.min_value | _, Int.max_value -> 0
| x, y -> x - y
错误:解析错误:“”之后应为[module_longident]。(在[module_longident]中)
我看不到任何错误。
我这样做utop
与Core.Std
开
Int.min_value
并且Int.max_value
是值,而不是构造函数(构造函数的名称大写,值的名称不是大写)。
您不能在模式匹配中使用值,而只能使用构造函数。
好的代码是
let minus (x, y) =
if x = Int.min_value
|| x = Int.max_value
|| y = Int.min_value
|| y = Int.max_value
then
0
else
x - y
您的错误代码等同于
let min_value = -1000000
let max_value = 1000000
let minus = function
| min_value, _ | max_value, _ | _, min_value | _, max_value -> 0
| x, y -> x - y
之所以进行编译,是因为它使用正确的名称(不是来自其他模块的名称),但是产生错误的结果(始终为0)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句