OCaml:如何创建一个n 1的列表

时间:2016-04-12 08:53:13

标签: ocaml

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

lst = [0] * N

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

我写了以下函数

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

我可以使用for循环执行某些操作或缩短代码吗?

4 个答案:

答案 0 :(得分:5)

使用ocaml batteries

List.make n 0 

应该成功(我还没试过)

答案 1 :(得分:5)

OCaml标准库构成一个最小代数,适合在其上构建用户库。您应该考虑使用一些可用的社区库。其中有很多,电池,核心,Extlib,容器,仅举几例。如果有疑问,我建议使用Core库,至少因为当前最先进的OCaml Book是用这个库编写的。 Core List.initopen 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>