list - 如何在 Ocaml 中使用 [x]?

标签 list ocaml

例如:当我想连接一个 int 列表时:[1, 2, 3]x我的代码是:

[1, 2, 3] @ [x]

但在另一种情况下,我有一个以列表为参数的函数,

val foo : int list

我还有另一个功能 print_foo服用foo是一个参数,返回类型是
val print_foo : int list list

我写了一个函数:print_foo [foo]
我的问题是:[foo]在这种情况下被类型检查接受,但在
逻辑意义?编写此函数的好方法是什么? [[x]] 也是同样的问题

您能否为我解释更多关于如何以及何时可以使用 [x][[x]] , ETC...?

非常感谢你,

最佳答案

[x]表示包含一个元素的列表:x .
[[x]]表示包含一个元素的列表:包含一个元素的列表:x .

所以,如果你说 x4 ,然后 [x] = [4]是仅包含 4 的列表, 和 [[x]] = [[4]]是仅包含仅包含 4 的列表的列表。

如您所见,[x]简单地说x自己进入一个列表。如果 x = [1, 2, 3] (也就是说,x 本身就是一个列表),那么您可能不想使用 [x] (= [[1, 2, 3]]) 调用函数,然后给它一个包含原始列表的列表,而不是列表本身。当然,这可能是完全合法的,并且在某些情况下是需要的,但如果您不确定,很可能不需要它。

所以,如果你有 fooint list ,然后您调用print_foo [foo] ,您是在说:“打印此列表,其中包含我要打印的列表。”你可能想说的是print_foo foo ,您省略了冗余列表包装器。这可以解释为“打印我要打印的这个列表”。

关于list - 如何在 Ocaml 中使用 [x]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8598877/

相关文章:

syntax - Ocamllex - 字符之间有什么区别? (#)

c# - 比较和更新 C# 中的两个列表

c++ - 初始化列表 vector 时出错

functional-programming - 在 OCaml 中更改相同类型

ocaml - 如何进行伽罗华域乘法?

compiler-errors - OCaml 变量类型泛化

ocaml - 如何卸载 OCaml 插件?

java - Java 中集合的浅拷贝

arrays - 嵌套列表最后一行元素重复所有前面的行

python - 有没有办法连接子列表中的字符串列表