问题标签 [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.
ocaml - 如何在 OCaml 的函数中返回 void?
简单的例子:我有一些函数,我需要全部调用它们,修改一个结构,只在一个函数中。使用这些简单的函数,任务可以不使用 void 的方式完成,但在其他任务中,您必须使用 void。所以,你可以做什么?
这是问题 - 我该如何执行下一个功能?
ocaml - x, fx, f(fx)的惰性列表,
Batteries.LazyList
允许定义惰性列表。我想定义一个包含x
, f x
, f (f x)
,f (f (f x))
等 的惰性列表。
根据模块文档中的评论,这似乎from_loop
是我想要的功能:
“从应用到from_loop data next
的连续结果创建一个(可能是无限的)惰性列表,然后应用到结果等。”next
data
这个描述表明,如果我想要一个非负整数的惰性列表,例如,我可以这样定义它:
但是,这失败了,因为签名from_loop
是
所以next
函数有签名('b -> 'a * 'b)
。在 utop 中,错误消息下划线n + 1
并说
我不明白'a
应该是什么。为什么next
函数应该返回一对?为什么列表的类型应该是 a 'a LazyList.t
?元素的类型不应该与函数参数的类型相同next
吗?该功能的描述并没有让我清楚地知道答案。
如果它有帮助,我对我正在尝试做的事情的概念来自 Clojure 的iterate
. 在 Clojure 中,我可以像这样创建上述定义:
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
嗯?代码中哪里有与int
s 相关的内容?我没看到什么?
( Cons
, Nil
, 和next
都LazyList
在 batLazyList.ml 中定义。)