OCaml中以下Python代码的等价物是什么?
lst = [0] * N
在我看来,OCaml没有为列表重载*
。
我写了以下函数
let makeList i = if i = 0 then [] else 0 :: makeList (i-1)
我可以使用for
循环执行某些操作或缩短代码吗?
答案 0 :(得分:5)
答案 1 :(得分:5)
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]
功能,可满足您的需求:
List.range 0 10;;
- : int list = [0; 1; 2; 3; 4; 5; 6; 7; 8; 9]
还有一个范围列表,可以创建iota列表:
opam install core
使用
安装核心coretop
要在顶层中使用它,请使用example.ml
程序(随核心一起安装)。
要编译程序,请使用corebuild,例如,假设您的代码位于corebuild example.native
:
<?php
$BASE_URL = "http://query.yahooapis.com/v1/public/yql";
$yql_query = 'select * from weather.forecast where woeid in (select woeid from geo.places(1) where text="Amsterdam")';
$yql_query_url = $BASE_URL . "?q=" . urlencode($yql_query) . "&format=json";
// Make call with cURL
$session = curl_init($yql_query_url);
curl_setopt($session, CURLOPT_RETURNTRANSFER,true);
$json = curl_exec($session);
// Convert JSON to PHP object
$phpObj = json_decode($json);
echo '<pre>';print_r($phpObj).'<pre>';
$weather = json_decode(json_encode($phpObj->query->results->channel->item->forecast), True);
?>
答案 2 :(得分:3)
OCaml不会使运营商超载。
标准库中没有任何内容可以创建此类列表,您必须自己实现它。
答案 3 :(得分:0)
从 ocaml 4.06 开始,您可以使用:
<Text>Hello, {"\n\n"}This is a example text. {"\n\n"}Greetings</Text>