OCaml:如何创建n1';在哪

OCaml:如何创建n1';在哪,ocaml,Ocaml,以下Python代码在OCaml中的等价物是什么 lst=[0]*N 在我看来,OCaml并没有重载列表的* 我已经编写了以下函数 let makeList i = if i = 0 then [] else 0 :: makeList (i-1) 我可以使用for循环或缩短代码吗?OCaml不会重载运算符 标准库中没有创建此类列表的功能,您必须自己实现。使用: 应该使它(我没有尝试过)OCaml标准库形成一个最小代数,适合在其上构建用户库。你应该考虑使用一些可用的社区图书馆。有很多,电池,核

以下Python代码在OCaml中的等价物是什么

lst=[0]*N

在我看来,OCaml并没有重载列表的
*

我已经编写了以下函数

let makeList i = if i = 0 then [] else 0 :: makeList (i-1)

我可以使用
for
循环或缩短代码吗?

OCaml不会重载运算符

标准库中没有创建此类列表的功能,您必须自己实现。

使用:


应该使它(我没有尝试过)

OCaml标准库形成一个最小代数,适合在其上构建用户库。你应该考虑使用一些可用的社区图书馆。有很多,电池,核心,Extlib,容器等等。如果有疑问,我建议使用
Core
library,至少因为当前的技术水平是在考虑这个库的情况下编写的。在
Core
中有一个
List.init
函数,适合您的需要:

open Core.Std
List.init 10 ~f:(const 0);;
- : int list = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
还有一个范围列表,可以制作物联网列表:

List.range 0 10;;
- : int list = [0; 1; 2; 3; 4; 5; 6; 7; 8; 9]
安装带有

opam install core
要在顶级中使用它,请使用
coretop
程序(与core一起安装)。 要编译程序,请使用corebuild,例如,假设您的代码位于
example.ml

corebuild example.native

自ocaml 4.06以来,您可以使用:

List.init N (fun x->0)

我收到一个错误,说:
error:Unbound value List.make
我想这是因为你没有安装电池:opam安装电池。它在顶级环境中与电池一起工作:#需要“电池”;;打开电池;;列出5.0;;将生成一个包含5个元素的列表,这些元素等于0。
fun->Array.make n 0 |>Array.to_list
我不太了解OCaml,所以我不理解
~f:(const 0)
。但是,这可以很好地工作,例如,一个由十个浮点组成的数组:
List.init 10(fun->0.0)
List.init N (fun x->0)