Arrays 如何查找列表中第一个非零元素的索引(语言-Ocaml)

Arrays 如何查找列表中第一个非零元素的索引(语言-Ocaml),arrays,ocaml,Arrays,Ocaml,我试图找到数组中第一个非零数的索引。在这里进一步解释,这是我们所期望的 考虑一个数组-[0;0;1;2;0;4;5;6] 预期结果将是数字1的索引,该索引应返回结果索引应为2nd 如果答案避免使用序列运算符和循环,那就太好了 提前谢谢 无let,序列op,用于和而在普通OCaml中,我可以写: class c = object (self) method f i = function | x::_ when x <> 0 -> i | _::xs ->

我试图找到数组中第一个非零数的索引。在这里进一步解释,这是我们所期望的

考虑一个数组-
[0;0;1;2;0;4;5;6]

预期结果将是数字
1
的索引,该索引应返回结果索引应为
2nd

如果答案避免使用序列运算符和循环,那就太好了


提前谢谢

let
,序列op
用于
在普通OCaml中,我可以写:

class c = object (self)
  method f i = function
    | x::_ when x <> 0 -> i
    | _::xs -> self#f (i+1) xs
    | [] -> failwith "Got the answer from StackOverflow"
end
;;

(new c)#f 0 [0;0;1;2;0;4;5;6];;
c类=对象(自身)
方法f i=函数
|x::\当x 0->i时
|#f(i+1)xs
|[]->failwith“从StackOverflow获得答案”
结束
;;
(新c)#f0[0;0;1;2;0;4;5;6];;

仅允许在命名rec和非递归函数时使用let。。。我需要一个不上课的程序ocaml@didierc我试过下面的那个,它很有效!