作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
新手问题。我正在经历非常好的Ocaml ORA书。当我去玩 Marshal 部分中的 magic_copy 示例时,我更接近浏览器而不是终端,所以我在 ocsigen 的 toplevel in a browser 中尝试了它。 ,我很惊讶地得到结果:
(* js_of_ocaml *)
# let ora_magic_copy a =
let s = Marshal.to_string a [Marshal.Closures] in
Marshal.from_string s 0;;
val ora_magic_copy : 'a -> 'b = <fun>
# (ora_magic_copy 2 : float) +. 3.1;;
- : float = 5.1
(* Linux toplevel *)
# (ora_magic_copy 3: float) +. 2.1;;
Segmentation fault (core dumped)
最佳答案
是的,您的问题来自您正在 javascript 顶层测试这一事实。
当您使用标准 ocaml
顶层,+.
操作对 OCaml 浮点数进行操作,即块内的双装箱,+.
的两个参数预计将成为指向此类框的指针。在您的示例中,您给出的不是指针,而是 OCaml 整数 2
(在内部,它表示为 5,即 2 << 1 + 1),因此 OCaml 在尝试读取内存中应该位于 0x5 位置的 double 值时出现段错误......
在 js_of_ocaml
浏览器,浮点数只是javascript浮点数,整数是javascript整数,+.
是 javascript 添加,它能够添加整数和浮点数(通过自动将整数转换为浮点数),因为值是由它们的类型标记的。
关于ocaml - js_of_ocaml 中的 Marshal 和 magic_copy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12343367/
新手问题。我正在经历非常好的Ocaml ORA书。当我去玩 Marshal 部分中的 magic_copy 示例时,我更接近浏览器而不是终端,所以我在 ocsigen 的 toplevel in a
我是一名优秀的程序员,十分优秀!