Ocaml 什么';这个函数怎么了?

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

错误:分析错误:[module_longident]应在“.”之后(在中) [module_longident])

我看不出有什么不对劲


我在
utop
中使用
Core.Std
opened

Int.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