Ocaml 检查所有元素是否与贴图/折叠相等

Ocaml 检查所有元素是否与贴图/折叠相等,ocaml,higher-order-functions,Ocaml,Higher Order Functions,给定一个元素列表,如[1,1,1]或[“a”,“a”,“a”],如何使用map/fold检查它们是否都相等 我试着这样做: let eq lst = fold (=) lst 它不会编译,因为没有累加器,但我真的不太确定累加器应该放什么。非常感谢您的帮助。好吧,这看起来像是一个作业,所以我不会给您完整的答案,只是一些提示 空列表由相等的元素组成(真空真理) 如果列表以x开头,并且所有其他元素都等于x,则列表中的所有元素都相等 嗯,这看起来像是一项作业,所以我不会给你完整的答案,只是一些提示

给定一个元素列表,如[1,1,1]或[“a”,“a”,“a”],如何使用map/fold检查它们是否都相等

我试着这样做:

let eq lst = fold (=) lst

它不会编译,因为没有累加器,但我真的不太确定累加器应该放什么。非常感谢您的帮助。

好吧,这看起来像是一个作业,所以我不会给您完整的答案,只是一些提示

  • 空列表由相等的元素组成(真空真理)
  • 如果列表以
    x
    开头,并且所有其他元素都等于
    x
    ,则列表中的所有元素都相等
嗯,这看起来像是一项作业,所以我不会给你完整的答案,只是一些提示

  • 空列表由相等的元素组成(真空真理)
  • 如果列表以
    x
    开头,并且所有其他元素都等于
    x
    ,则列表中的所有元素都相等
如果您将其作为普通函数编写,而不是使用部分应用程序,该怎么办?这听起来很像一个你应该自己解决的任务。你至少应该解释你当前方法背后的原因。通常情况下,累加器会将最终答案作为一部分包含在内。对于简单的情况,累加器是最终答案。在您的情况下,最终答案是布尔值。这是我考试的一道练习题。我现在正在尝试使用模式匹配,我认为这很有效,但是我想知道是否有一种简单的方法可以使用foldw,如果你把它写成一个普通函数,而不是使用部分应用程序呢?这听起来很像一个你应该自己解决的任务。你至少应该解释你当前方法背后的原因。通常情况下,累加器会将最终答案作为一部分包含在内。对于简单的情况,累加器是最终答案。在您的情况下,最终答案是布尔值。这是我考试的一道练习题。我现在正在尝试使用模式匹配,我认为这很有效,但我想知道是否有一种简单的方法可以使用折叠