问题标签 [js-of-ocaml]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ocaml - js_of_ocaml 中的 Marshal 和 magic_copy
新手问题。我正在阅读非常好的Ocaml ORA书。当我去玩 Marshal 部分中的 magic_copy 示例时,我更接近于浏览器而不是终端,所以我在 ocsigen 的toplevel in a browser中尝试了它,我很惊讶地得到了结果:
检查 ocaml 2(本书编写时的当前版本)和 ocaml 3.12.1 之间是否发生了变化,由我的机器上安装的顶层和 js_of_ocaml 使用,我在我的机器上安装的普通顶层中尝试了相同的示例并得到了书中解释的结果:由于类型系统检查 Marshaled 值的麻烦而导致的段错误。
我只是好奇:为什么?
我看到在三种情况下,Marshal.to_string 给出了相同的字符串:linux marshalling an int,js_of_ocaml marshalling and int,js_of_ocaml marshalling a float。奇怪的人是 linux 顶级编组一个浮点数。
这是因为 js_of_ocaml 使用了 javascript 的基本类型吗?或者只是......未定义的行为?
javascript - 代码完成不适用于 OcaIde + js_of_ocaml
我正在尝试使用带有 js_of_ocaml 的 Eclipse 的 OcaIde 插件。不幸的是,js_of_ocaml 用于调用 n 元方法的 '##' 语法扰乱了代码完成。
我在代码顶部添加了以下注释以尝试让 OcaIde 运行预处理器: (* pp: -parser o -parser op -printer a -I /usr/lib/ocaml/js_of_ocaml/pa_js.cmo *)
这似乎在做某事,因为我可以在“大纲”视图中看到一些重写的变量名。不幸的是,它完全破坏了智能感知,我不再在代码中得到错误标记(红色曲线)。
错误日志充满了以下错误:
有任何想法吗?
ocaml - 代码完成不适用于 typerex 中的 js_of_ocaml
是否可以在 Typerex 中为外部模块启用类型完成?特别是我正在尝试使用 js_of_ocaml。
我可以在代码完成中看到本地标识符,所以它肯定是启用的,但是当我输入(例如)时,Dom_html.
我没有得到模块内容的列表。
build - 如何使用带有 js_of_ocaml 的模块?
我目前正在开发一个用 OCaml 编写并使用 js_of_ocaml 编译为 javascript 的网站项目。只要我只有一个使用该命令的源文件,它就可以很好地工作,ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.syntax -syntax camlp4o -linkpkg -o file.byte file.ml
但我想在我的项目中包含几个模块。我怎样才能做到这一点 ?
其他模块实际上是由 ocamllex 和 menhir 生成的词法分析器和解析器。我已经阅读了有关如何将 ocamllex 和 menhir 与 js_of_ocaml 一起使用的教程,但它对 js_of_ocaml 的安装位置做出了错误的假设(我使用 opam 安装它)并且它使用 ocamlbuild,我想知道如何在不使用自动化的情况下手动操作ocamlbuild 等工具。
ocaml - 如何将 OCaml 字节码映射到其原始源代码位置?
格式或库是否有一些不错的功能可以从字节码的某些部分转到它最初来自的代码行?这显然对调试和错误消息很有用。
特别是,我正在研究向js_of_ocaml添加对源映射的支持有多难。
javascript - js_of_ocaml and Deriving_Json
I need some help to get js_of_ocaml working. There's not much information about it on the net, and the manual is very sparse (no snippets or usage examples, no comment sections).
I have a Card
module on the server with a card
record. I'm sending a card list
to the client using Ajax, and there I want to read and traverse this list. What I end up with is this:
...where json
has type 'a
, according to documentation (not when I run it, of course).
I can log json##length
and get the correct length of the list. Where do I go from here? Ideally, I'd like to use Deriving_Json
to type-safe get a card list
again, but I could also use a for-loop (not as elegant, but whatever).
arrays - 来自 Javascript 的 Js.js_array;强制,获取/设置
我的 Javascript 文件中有一组对象,我需要从 js_of_ocaml 访问这些对象。到目前为止,我已经想出了这个:
在 Javascript 中,数组将table_decks = {{deck_nr: 10, ...}, {deck_nr: 20, ...}}
包含更多字段,而不仅仅是deck_nr
.
我的问题是:我如何访问这个数组?我在 中找到了很多函数Js.js_array
,但没有 get/set。
(另一个问题是强制是否正确?)
javascript - js_of_ocaml 和 event_listener
我在 js_of_ocaml 中有一个 div,我想分配一个 onmouseover 事件,比如
deck_div##onmouseover <- (fun () -> (* do stuff *) )
但是,预期的函数类型是
(Dom_html.divElement Js.t, Dom_html.mouseEvent Js.t) Dom_html.event_listener
如何构造这个事件监听器?deck_div
没有办法addEventListener
。
ocaml - js_of_ocaml 可以从 OCaml 编译器编译内存数据结构吗?
看到 OCaml 编译器和 js_of_ocaml 都是用 OCaml 编写的,(对我来说)我应该能够编写一个使用的包装器似乎是合理的:
- OCaml
compilerlibs
将 OCaml 源代码编译成,比如说Instruct.instruction list
(使用Bytegen.compile_implementation
),和 - js_of_ocaml 将指令列表编译成 JavaScript,从而绕过
Parse_bytecode
.
因此,我会将所有数据保存在内存中,避免写入然后读取cmo
文件。我希望我可以将其写入cmo
缓冲区并让 js_of_ocaml 处理它,但它似乎充其量是低效的。
这是现实的/以前做过吗,还是我只是想在错误的地方/方式加入这两个组件?
ocaml - js_of_ocaml 和核心
我对 OCaml 尤其是 js_of_ocaml 编译器很陌生。
有人设法编译了将 Jane Street Core 与 js_of_ocaml 一起使用的应用程序吗?我在编译过程中收到很多“缺少原语”警告,然后当我尝试运行它时,node
它们变成了实际的异常。
我知道这些是不能从 OCaml 移植到的原语,JS
并且它们的实现应该取决于应用程序,但是对于核心,它们实际上有数千个,而我的程序只使用输出到stdout
.
顺便说一句,我什至在编译一个简单的“hello world”项目时都遇到了麻烦,因为 IO 函数没有在 JS 中实现。某处是否有可用于此目的的“标准”JS文件?例如替换caml_ml_output_char
为console.log
和其他东西,以便模块可以编译成有用的东西,而无需编写任何自定义javascript?