Ocaml 什么';这个函数怎么了?
错误:分析错误:[module_longident]应在“.”之后(在中) [module_longident]) 我看不出有什么不对劲Ocaml 什么';这个函数怎么了?,ocaml,Ocaml,错误:分析错误:[module_longident]应在“.”之后(在中) [module_longident]) 我看不出有什么不对劲 我在utop中使用Core.StdopenedInt.min\u value和Int.max\u value是值,而不是构造函数(构造函数的名称大写,值的名称不大写) 不能在模式匹配中使用值,只能使用构造函数 好的代码是 let minus = function | Int.min_value, _ | Int.max_value, _ | _, In
我在
utop
中使用Core.Std
openedInt.min\u value
和Int.max\u value
是值,而不是构造函数(构造函数的名称大写,值的名称不大写)
不能在模式匹配中使用值,只能使用构造函数
好的代码是
let minus = function
| Int.min_value, _ | Int.max_value, _ | _, Int.min_value | _, Int.max_value -> 0
| x, y -> x - y
你的错误代码相当于
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
它之所以编译,是因为它使用了正确的名称(不是来自不同模块的名称),但生成了错误的结果(始终为0)
let min_value = -1000000
let max_value = 1000000
let minus = function
| min_value, _ | max_value, _ | _, min_value | _, max_value -> 0
| x, y -> x - y