gpt4 book ai didi

node.js - 如何使用 js_of_ocaml 正确编译 OCaml 程序?

转载 作者:搜寻专家 更新时间:2023-10-31 23:41:43 25 4
gpt4 key购买 nike

我想使用 js_of_ocaml 在 OCaml 中翻译以下 Javascript 示例程序:

var AWS = require('aws-sdk');
AWS.config.region = 'us-west-2';
var s3 = new AWS.S3();
s3.listBuckets(function(err, data) {
if (err) { console.log("Error:", err); }
else {
for (var index in data.Buckets) {
var bucket = data.Buckets[index];
console.log("Bucket: ", bucket.Name, ' : ', bucket.CreationDate);
}
}
});

我写了以下 OCaml 片段

let require_module s =
Js.Unsafe.fun_call
(Js.Unsafe.js_expr "require")
[|Js.Unsafe.inject (Js.string s)|]

module AWS : sig
type error

class type s3 = object
method listBuckets :
(error -> Js.Unsafe.any -> unit) Js.callback -> unit Js.meth
end

val s3client : unit -> s3
end = struct
let _js_aws = require_module "aws-sdk"

type error =
Js.Unsafe.any

class type s3 = object
method listBuckets :
(error -> Js.Unsafe.any -> unit) Js.callback -> unit Js.meth
end

let s3client () =
let constr_s3 = _js_aws ## S3 in
new%js constr_s3 ()
end

但是当我编译它的时候

ocamlfind ocamlc -c -package "js_of_ocaml js_of_ocaml.syntax" -o example_s3.cmo example_s3.ml

它死于

Error: '##' is not a valid value identifier.

我该如何修复我的程序或我的编译命令来解决这个问题?

最佳答案

如果您想使用包 js_of_ocaml.syntax,您必须将 -syntax camlp4o 选项添加到 ocamlfind。

但是你应该使用新的 ppx 语法而不是旧的 camlp4 语法(你似乎知道,因为你使用了 new%js)。为此,您需要将 js_of_ocaml.syntax 替换为 ppx 语法的包。

关于node.js - 如何使用 js_of_ocaml 正确编译 OCaml 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34852517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com