问题标签 [ocaml-batteries]

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 投票
2 回答
5615 浏览

ocaml - 如何在 OCaml 的函数中返回 void?

简单的例子:我有一些函数,我需要全部调用它们,修改一个结构,只在一个函数中。使用这些简单的函数,任务可以不使用 void 的方式完成,但在其他任务中,您必须使用 void。所以,你可以做什么?

这是问题 - 我该如何执行下一个功能?

0 投票
2 回答
179 浏览

ocaml - x, fx, f(fx)的惰性列表,

Batteries.LazyList允许定义惰性列表。我想定义一个包含x, f x, f (f x),f (f (f x))等 的惰性列表。

根据模块文档中的评论,这似乎from_loop是我想要的功能:

“从应用到from_loop data next的连续结果创建一个(可能是无限的)惰性列表,然后应用到结果等。”nextdata

这个描述表明,如果我想要一个非负整数的惰性列表,例如,我可以这样定义它:

但是,这失败了,因为签名from_loop

所以next函数有签名('b -> 'a * 'b)。在 utop 中,错误消息下划线n + 1并说

我不明白'a应该是什么。为什么next函数应该返回一对?为什么列表的类型应该是 a 'a LazyList.t?元素的类型不应该与函数参数的类型相同next吗?该功能的描述并没有让我清楚地知道答案。


如果它有帮助,我对我正在尝试做的事情的概念来自 Clojure 的iterate. 在 Clojure 中,我可以像这样创建上述定义:

0 投票
1 回答
61 浏览

ocaml - 惰性 fold_right 定义中的 int 函数错误

我正在尝试编写Batteries.LazyList.lazy_fold_right. 我想要一个类似的函数,它可以折叠在两个惰性列表而不是一个惰性列表上。但是,我遇到了一个对我没有任何意义的错误。

这是我在batLazyList.ml中开始的原始电池定义:

这是我的版本:

错误出现在带有多个sinit的行尾的变量上:Nil

Error: This expression has type int -> (int -> 'a) -> 'a t but an expression was expected of type 'b lazy_t

嗯?代码中哪里有与ints 相关的内容?我没看到什么?

( Cons, Nil, 和nextLazyList在 batLazyList.ml 中定义。)

0 投票
1 回答
88 浏览

ocaml - 在 Utop 中使用电池时出现语法错误

我已经成功安装了电池并且可以让它工作......有点。

电池语法错误 自从 Opam 列出以来,我为什么会收到语法错误的任何想法:

取决于:“ocaml”{>=“4.00.0”&<“4.10.0”}

而且,我在:OCaml 顶层,版本 4.07.1