Functional programming OCaml计算负片数

Functional programming OCaml计算负片数,functional-programming,ocaml,Functional Programming,Ocaml,我真的被困在如何进行这件事上了。我被要求数一数列表中的否定数,我会提交作业,并附上: let nneg = [4; 9; -5; 0; -5; 1];; List.filter nneg (fun-> (-)) List.filter nneg (fun x -> x < 0) 设nneg=[4;9;-5;0;-5;1];; List.filter nneg(乐趣->() List.filter nneg(乐趣x->xint”,而是一个“int list”

我真的被困在如何进行这件事上了。我被要求数一数列表中的否定数,我会提交作业,并附上:

   let nneg = [4; 9; -5; 0; -5; 1];;
   List.filter nneg (fun-> (-))
   List.filter nneg (fun x -> x < 0)
设nneg=[4;9;-5;0;-5;1];;
List.filter nneg(乐趣->()
List.filter nneg(乐趣x->x<0)
但它不是一个“int list->int”,而是一个“int list”

所以我开始做这个,但我一辈子都不知道如何匹配它:

   let rec rev nneg = match nneg with | [] -> 0 | head::tail ->(filter  tail<0) head;;

让rec rev nneg=将nneg与|[]->0 | head::tail->(filter tail您不想筛选列表。您想将它折叠为int。调用的参数也有错误

# List.filter;;
- : ('a -> bool) -> 'a list -> 'a list = <fun>

由于这是一个赋值,我只给你一个提示。看看fold函数。显然,你可以通过过滤大于或等于0的所有元素,然后对它们进行计数来解决它,但这需要两次迭代。

你不想过滤列表。你想将它折叠为int。调用的参数也错误

# List.filter;;
- : ('a -> bool) -> 'a list -> 'a list = <fun>

由于这是一个赋值,我只给你一个提示。看看fold函数。显然,你可以通过过滤大于或等于0的所有元素,然后对它们进行计数来解决它,但这需要两次迭代。

你不想过滤列表。你想将它折叠为int。调用的参数也错误

# List.filter;;
- : ('a -> bool) -> 'a list -> 'a list = <fun>

由于这是一个赋值,我只给你一个提示。看看fold函数。显然,你可以通过过滤大于或等于0的所有元素,然后对它们进行计数来解决它,但这需要两次迭代。

你不想过滤列表。你想将它折叠为int。调用的参数也错误

# List.filter;;
- : ('a -> bool) -> 'a list -> 'a list = <fun>
既然这是一个赋值,我就给你一个提示。看看fold函数。显然,你可以通过过滤大于或等于0的所有元素,然后对它们进行计数来解决它,但这需要两次迭代