Int列表到Int OCaml

Int列表到Int OCaml,ocaml,Ocaml,我是OCaml新手,所以我正在学习基础知识。我正在编写一个函数,用于确定列表是否包含给定的整数 let rec int_member (x: int) (l: int list) : bool begin match l with | [] -> false | hd :: rest -> x = hd || int_member rest x end 作为一个测试案例 let test (): bool = (int_member 1 [1;2;3]) = true ;; ru

我是OCaml新手,所以我正在学习基础知识。我正在编写一个函数,用于确定列表是否包含给定的整数

let rec int_member (x: int) (l: int list) : bool 
begin match l with
| [] -> false
| hd :: rest -> x = hd || int_member rest x
end
作为一个测试案例

let test (): bool =
(int_member 1 [1;2;3]) = true
;; run_test "contains 1 [1;2;3]" test

我收到一个错误消息,表示此表达式的类型为int list,但预期表达式的类型为int。如何修复此问题?

如果查看递归调用,您应该会发现您传递的参数不正确!否则这段代码相当不错。我看到一个缺失的=,并且这里使用begin和end不是很习惯的OCaml。您可以不使用它们。

如果您查看递归调用,您应该会发现您传递的参数不是很正确!否则这段代码相当不错。我看到一个缺失的=,并且这里使用begin和end不是很习惯的OCaml。你可以把它们排除在外

int_成员rest x

int_成员的第一个参数应该是int。您正在传递一个int列表作为第一个参数。这就是错误消息所抱怨的

你只是简单地改变了论点的顺序

附:开始。。。在代码中结束是多余的

int_成员rest x

int_成员的第一个参数应该是int。您正在传递一个int列表作为第一个参数。这就是错误消息所抱怨的

你只是简单地改变了论点的顺序


附:开始。。。代码的结尾是多余的。

还有一个问题。关于风格,有没有其他的表达方式?如果a=k,则b与k相关的其他问题。关于风格,有没有其他的表达方式?如果a=k,则b与k相关