小编But*_*ium的帖子

是否可以创建一个在 OCaml 中从左到右计算参数的运算符

当您定义一个运算符时,例如

let (++) a b = a :: b 
Run Code Online (Sandbox Code Playgroud)

当你这样做时

let v = foo a ++ bar b 
Run Code Online (Sandbox Code Playgroud)

bar 在 foo 之前评估。解决方法是使用 let 表达式,即

let e1 = foo a in let e2 = bar b in e1 ++ e2
Run Code Online (Sandbox Code Playgroud)

然而,有时定义一个运算符会很方便,例如它总是从左到右进行计算。有没有办法在 OCaml 中或使用 ppx 或 with 来做到这一点lazy

evaluation ocaml operators lazy-sequences ppx

5
推荐指数
1
解决办法
123
查看次数

如何在 ocaml 中将 Flambda 与沙丘一起使用?

我正在做一个项目,我需要尽可能地优化我的代码,因为正常编译需要几个小时才能运行。

有人告诉我使用 Flambda,但我在互联网上没有找到任何有关如何将其与沙丘一起使用的信息。

我希望得到遵循的说明/阅读的资源。

optimization ocaml compilation ocaml-dune

3
推荐指数
1
解决办法
1113
查看次数

Array.safe 和 unsafe_get/set 有什么区别

我在OCaml 论坛上寻求一些优化我的代码的建议。我使用了很多Array.setand Array.get(这是我的大部分代码1 2),有人告诉我我可以使用Array.unsafe_getandArray.unsafe_set来获得一些时间。

safe在这种情况下和function有什么区别unsafe

arrays ocaml

0
推荐指数
1
解决办法
230
查看次数