问题标签 [ocaml-core]

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.

0 投票
6 回答
16083 浏览

ocaml - OCaml 中是否有中缀函数组合运算符?

只是一个快速的问题。我想知道在标准库(或 Jane Street 的核心或电池中)中定义的 OCaml 中是否有一个中缀函数组合运算符,例如 Haskell 中的 (.) 函数,它为我们节省了很多括号,因为我们可以编写(f . g . h) x而不是不那么吸引人f (g (h x)))

谢谢各位。

0 投票
1 回答
1291 浏览

ocaml - 使用核心库在 ocaml 中定义地图类型

OCaml 语言的核心库带有非常有用的 Map 和 Table 模块。如果我想使用某个内置类型的映射,我知道如何定义自己的类型:

我也知道如何使用多态比较定义自定义地图:

我不知道如何使用从我自己的类型到我自己的类型的非多态比较来定义自定义映射。例如,假设我有

我知道第三个参数应该是比较器,但我不知道在里面放什么:两者都Int.comparator没有Int.comparator_witness给出想要的结果。

0 投票
2 回答
649 浏览

ocaml - 了解 Core 的 `Fn.const`

Jane Street 的 Core lib 有这样一个功能:Fn.const.

https://github.com/janestreet/core_kernel/blob/master/lib/fn.ml

val const : 'a -> 'b -> 'a
产生一个只返回其第一个参数的函数

我真的不明白。

  1. 这个函数的目的是什么?在什么场景下我们必须使用它?
  2. 为什么要();放在第一位?
  3. 为什么不写成let const c = fun () -> c? 这将给出一个unit作为参数的函数并始终返回 initial c
  4. 如果我这样做let f = const 5f将成为一个以'_a参数为参数的函数。返回具有弱多态参数的函数的目的是什么?

ps 我看到Fnmodule里面的几个函数都();在返回一个函数之前,有什么用();

0 投票
2 回答
347 浏览

ocaml - ocaml-core 等效于 Unix.create_process

我想将以下命令从Unix库移植到 Jane Street 的Core.Std.Unix库。

也就是说,我有一个可执行文件exec和参数args,并希望使用与当前进程相同的输入/输出/错误通道来运行该进程。

我可以接近Core.Std.Unix.create_process ~exec:exec ~args:args,但无法弄清楚如何将stdin,stdout,stderr这个函数从核心返回的值与当前进程使用的文件描述符连接起来。

0 投票
0 回答
46 浏览

ocaml - Why does Core only recognize a subset of whitespace characters?

Char.is_whitespace is documented to return true only for ' ','\n','\t','\r'. Why doesn't it recognize '\f' and '\v' (form-feed and vertical tab)? POSIX and C both consider these to be whitespace, so it is very surprising that Core doesn't.

0 投票
1 回答
288 浏览

ocaml - 读取 OCaml 中的所有字符太慢

我是 OCaml 的初学者,我想从文件中读取行,然后检查每行中的所有字符。作为一个虚拟示例,假设我们要计算文件中字符“A”的出现次数。

我尝试了以下

我用它编译

运行它

在一个有一百万行的文件上,这给了我以下时间

这是我的python实现的4倍。我很确定应该可以让它更快,但我应该怎么做呢?

0 投票
2 回答
575 浏览

ocaml - 为什么 Core.Std 不推荐使用 `close_in` 和 `close_out` 函数?

如果 I open Core.Std,尝试使用close_out函数关闭 anout_channel会给我一个错误,因为 Core 更改了的类型签名close_out给我一个弃用错误消息。

第一个问题:为什么 Core deprecate close_outdeprecated 但不弃用close_out_noerr

第二个问题: Core 仍然希望我使用in_channels 和out_channels 还是更喜欢我为 IO 使用不同的 API?

第三个问题:我能找到的唯一其他 IO API 是类似read或模块write中的函数Unix,它们适用于文件描述符而不是文件句柄。在 C 中,文件描述符函数直接发出系统调用,而来自 stdio.h 的那些接收FILE *缓冲 IO。这在 Ocaml 中是否类似于 Unix 模块中的函数直接发出系统调用以及使用in_channelout_channel执行缓冲 IO 的函数?

0 投票
1 回答
44 浏览

ocaml - OCaml - 在核心中找不到 Sys.big_endian 值

我刚刚意识到打开时val big_endian : boolSys模块中删除了Core.Std.

我在哪里可以找到类似的值?

0 投票
2 回答
245 浏览

ocaml - 一起使用 Core 和 Lwt

我在我正在研究的库中同时使用 Core 和 Lwt。Core 有我熟悉的好模块,而且我更喜欢 Lwt 线程。

这是常见的事情吗?是否有充分的理由不这样做,而是使用,比如说,只使用核心或只使用 Lwt + 电池?

0 投票
1 回答
2617 浏览

installation - 如何在(Arch)Linux x86_64 上安装 OCaml Core 库?

opam init. _ 此外,错误的截断部分表明以下内容:

请安装系统范围的camlp4 版本。这是必要的,因为您使用的是 OCaml 4.02.1 和系统编译器开关(它使用您预先存在的安装而不是从头开始编译)。

如果您无法安装系统范围的camlp4,那么您仍然可以通过切换到本地安装来使用OCaml 4.02opam switch 4.02.1

再来一次...

我需要切换到不同的编译器吗?