首页 > 解决方案 > 对于没有整数的 OCaml 中的语句

问题描述

出于学习的原因,我想在 OCaml 中使用 for 循环而不是递归。

我进行了一些研究并应用了一个示例(https://ocaml.org/learn/tutorials/camlp4_3.10/foreach_tutorial.html):

let a_list = ["hello"; "world"] in
for s in a_list do
  print_endline s
done

这是有道理的。但是,当我查看它时(例如在 Visual Studio 上),它告诉我 's' 是一个 int 变量。因此,我不能做类似的事情(其中'a','b',......是任何类型的变量):

let a_list = [a;b;c...] in
for s in a_list do
  match s with
    ...
done

有没有办法像在 Python 中那样使用 for 语句?我的意思是,使用 's in list' 并且 s 的类型将是它的类型而不是 'int'?

那里有一些我看不到的东西。

提前致谢!

标签: listfor-looprecursionmatchocaml

解决方案


OCaml 中没有 foreach。递归是惯用的风格,或者如果你真的想避免递归,你可以使用while循环。For 循环仅迭代整数。

您可能对所链接教程的性质感到困惑:这是一个为 OCaml 实现(旧式)语法扩展的教程,而不是关于for在 OCaml 中使用循环的教程。


推荐阅读