OCaml中以下Python代码的等价物是什么?
lst = [0] * N
在我看来,OCaml没有超载*列表.
我写了以下功能
let makeList i = if i = 0 then [] else 0 :: makeList (i-1)
Run Code Online (Sandbox Code Playgroud)
我可以使用for循环执行某些操作或缩短代码吗?
使用ocaml电池:
List.make n 0
Run Code Online (Sandbox Code Playgroud)
应该做到(我还没试过)
OCaml标准库形成一个最小代数,适合在其上构建用户库.您应该考虑使用一些可用的社区库.其中有很多,电池,核心,Extlib,容器,仅举几例.如果有疑问,我建议使用Core库,至少因为当前最先进的OCaml Book是用这个库编写的.在Core有一个List.init功能,适合您的需要:
open Core.Std
List.init 10 ~f:(const 0);;
- : int list = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
Run Code Online (Sandbox Code Playgroud)
还有一个范围列表,可以创建iota列表:
List.range 0 10;;
- : int list = [0; 1; 2; 3; 4; 5; 6; 7; 8; 9]
Run Code Online (Sandbox Code Playgroud)
安装核心
opam install core
Run Code Online (Sandbox Code Playgroud)
要在顶层中使用它,请使用coretop程序(与核心一起安装).要编译程序,请使用corebuild,例如,假设您的代码位于example.ml:
corebuild example.native
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1357 次 |
| 最近记录: |