以下代码片段来自官方的OCaml :| a :: (b :: _ as t) -> if a = b then compress t else例如,大小写在哪里?是smaller -> smaller吗?我知道smaller是一个变量,或者是一个标识符,但是它返回了什么(在OCaml中返回正确的术语是为了这里发生的事情)?我知道OCaml中的列表是单独链接的,所以我也想知道是否正在生成一个新列表,或者是否正在削减现有列表中的元素?由于OCam
match input with | second -> firstOCaml告诉我,第一种情况是无可辩驳的,其他情况没有使用。我发现这种行为令人费解,因为我想要分解一个元组并绑定它的元素,然后将变量与这些元素相匹配;它似乎不起作用。在这一点上,我意识到OCaml必须相信y只是一个新绑定的影子名称,因此可以与它匹配所有内容。
但我也知道,使用
我想用Ocaml编写一个函数,给出一个四重和四重(x,y,z,f)的列表,返回一个包含元组( x‘,y',z',g)的列表,使x=x’或y=y‘或z= z’(这些是整数)。_, r,Some(_)) -> hd::constrained_by c tl end 问题:当它被调用时,不管我们匹配的是什么四倍此外,问题是它返回警告x,y,r在行(警告)是未使用的。