list - 使用 fold_left 在 OCaml 中搜索元素

标签 list ocaml

我想知道如何在 Ocaml 中构建一个函数,该函数使用 List.fold_left 找出列表中是否存在元素。
例子:

exists 3 [1;2;3;4;5] 
=> true

这个函数的类型是:a -> bool -> 'a list -> bool
我的想法是如何做到这一点的:
let exists k l = List.fold_left( fun a x-> a=x) k l

但显然是错误的。有什么建议怎么做吗?

最佳答案

let exists k l =
    List.fold_left (fun b x -> b || x = k) false l

对@tonio 回答的两条评论:
  • 使用 || 而不是多余的 if ... then true else ...
  • 使用结构相等 ( = ) 而不是引用相等 ( == ) 来比较值。

  • 此外,existsList module 中可用。内置函数效率更高,因为它不必每次都遍历整个列表。

    关于list - 使用 fold_left 在 OCaml 中搜索元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10413930/

    相关文章:

    Python - 将二维列表中的值除以单个值的简便快捷方法

    list - Markdown:列表转换不好

    licensing - 何时才能确切发布依赖LGPL库的GPL软件?

    debugging - ocamldebug 如何与包含电池的项目一起使用?

    algorithm - 将数字添加到函数 OCaml 中的列表

    ocaml - 如何在 OCaml 中使用断言?

    java - 这是一种在 Java 中创建只读列表的方法吗?

    python - 如何将字符串列表与整数列表列表组合起来

    Python-无法将列表转换为字符串

    ocaml - ocaml中的自动机