Syntax &引用;变量必须出现在“模式”的两侧;

Syntax &引用;变量必须出现在“模式”的两侧;,syntax,ocaml,Syntax,Ocaml,当我在OCaml中键入一些代码时,我想同时匹配两种情况(因为我编写的函数是可交换的): 我得到以下错误: Error: Variable two must occur on both sides of this | pattern 当我删除as语句时,问题不会出现,但出于逻辑目的,我需要它。为什么我不能这样做?我必须重写逻辑两次吗?,因为的优先级低于,。因此,您应该在Two(u,u)周围加上括号作为Two我找到了一个解决方案。match语句中的第二个是将One(x),Two(,)作为类型为so

当我在OCaml中键入一些代码时,我想同时匹配两种情况(因为我编写的函数是可交换的):

我得到以下错误:

Error: Variable two must occur on both sides of this | pattern

当我删除
as
语句时,问题不会出现,但出于逻辑目的,我需要它。为什么我不能这样做?我必须重写逻辑两次吗?

,因为
的优先级低于
。因此,您应该在
Two(u,u)周围加上括号作为Two

我找到了一个解决方案。match语句中的第二个
是将
One(x),Two(,)
作为类型为
something*something
的单个值进行加工。添加括号可以解决这个问题:
One(x),
Error: Variable two must occur on both sides of this | pattern