ocaml 相关问题

OCaml是一种严格的静态类型函数式编程语言,专注于表达性,正确性和效率。

如何重塑列表

因此考虑获取 [1; 2; 3; 4; 5; 6; 7; 8; 9] 并将其重塑为 [[1; 2; 3]; [4; 5; 6]; [7; 8; 9]]。你会如何在 OCaml 中做到这一点?我想要一个简单的功能或支架上的东西......

回答 2 投票 0

证明单子第一定律

鉴于: 模块 FunMonad = 结构 输入 'a t = (unit -> 'a) 让 return x = fun () -> x 让绑定 m f = fun () -> ((f (m ())) ()) (* 解释为什么不:让绑定 m f = f (m ()) *) 让 (&...

回答 0 投票 0

OCaml 做不可变数据结构共享吗?

OCaml 是否默认对不可变数据结构进行结构共享(链接)? 如果没有,是否有类似构造函数属性的东西指定何时共享实例?

回答 2 投票 0

用 None 证明 monad 选项?

给定这个选项monad: 模块 OptMonad = 结构 输入'a t = '一个选项 让返回 v = 一些 v 让绑定 m f = 将 m 与 |一些 v -> f v (***) |无 -> 非...

回答 1 投票 0

类型错误:类型为 (string * terme) 列表的预期表达式,但收到类型为 ((terme -> terme) * (terme -> terme)) 列表的表达式

我遇到过这个错误,无法解决。 输入术语 = |字符串变量 |字符串符号 | terme * terme 的函数 异常检查 让 rec sub v t = 函数 | Var v' 当 v = v' -&...

回答 0 投票 0

List monad 和 bind with list.concat 和 list map?

给定这个列表 monad: 模块 ListMonad = 结构 输入 'a t = 'a 列表 让返回 x = [x] 让绑定 m f = List.concat (List.map f m) 让 (>>=) = 绑定 让零 = [] (* 中性元素 ...

回答 0 投票 0

创建一个空树拉链,但是树没有定义为空

我得到了这个模块类型,我被要求创建一个空的 tree_zipper,但我认为树拉链的以下实现是不可能的: 模块类型 TREE_ZIPPER = 签名 输入'a

回答 1 投票 0

Ocaml中如何统计连续重复的次数

我正在尝试编写一个接受列表的函数,并返回列表中连续重复元素的数量。 例如,给定 [1;2;3;3;4;4;5],该函数应返回 2 这是……

回答 3 投票 0

TreeZipper 下一个操作 _ vs 完全匹配表达式

让下面的树拉链: type 'a ntree = 'a * 'a ntree 列表的节点 输入'上下文= |顶部 | 'a ntree list * 'a * 'a context * 'a ntree list 的上下文 输入'a tree_zipper = TZ ...

回答 1 投票 0

Zipper数据结构删除操作,[关闭]

给定一个拉链: 输入 'a zipper = 'a list * int;; 异常为空 让空 = ([], 0) 给出的删除操作是: 让 remove_exn (l, n) = 让 rec rem ll nn = 将 (nn, ll) 与...匹配

回答 0 投票 0

Zipper 数据结构移除操作,全部移除索引 i 后面还是只移除一个榆树?

给定一个拉链: 输入 'a zipper = 'a list * int;; 异常为空 让空 = ([], 0) 给出的删除操作是: 让 remove_exn (l,n) = 让 rec rem ll nn = 匹配 (nn,ll) 与 | (...

回答 0 投票 0

将函数从使用两个 `let` 和 `in` 转换为只使用一个 `let`

我发现这种类型的拉链和插入函数定义如下: 输入 'a zipper = 'a list * int;; 异常为空 让空 = ([], 0) let insert ((l, n): '一个拉链) (a: 'a) : '一个拉链 = 让...

回答 2 投票 0

Ocaml:惰性列表

如何制作一个惰性列表来表示一系列加倍的数字?例子: 1 2 4 8 16 32

回答 5 投票 0

Ocaml 的额外参数,它仍然有效

我发现这种类型的拉链和插入函数定义如下: 输入 'a zipper = 'a list * int;; 异常为空 让空 = ([], 0) let insert ((l, n): '一个拉链) (a: 'a) : '一个拉链 = 乐...

回答 2 投票 0

Ocaml 的atan2 -2。 3. 不解析

在 ocaml 中对负浮点数使用 atan2 时出现解析错误 #atan2 -2。 3.;; 第 1 行,字符 0-5: 错误:此表达式的类型为 float -> float -> float 但表达是exp...

回答 1 投票 0

为什么 Ocaml 中的“断言”不被视为 bool->unit 类型的函数,而是一个关键字?

我不明白为什么“断言”不被视为 bool->unit 类型的函数,而是关键字。 # 断言 (2=2) ;; - :单位=() #断言;; 第 1 行,字符 6-8: 错误:语法错误

回答 0 投票 0

zipper:返回从焦点位置开始的子列表 |但为什么当 n > 0 时?

我找到了这种类型的拉链并得到了这样定义的函数: 输入 'a zipper = 'a list * int 异常为空 让空 = ([], 0) (* get: 返回从焦点位置开始的子列表 *) 让 rec g...

回答 0 投票 0

Thunk 递归内部递归

给定一个函数 m(a, b) = 1 如果 n = 0 并且 m(a, b) = m(a-q, m(a,b)) 否则。 我想用 thunk 来控制这个函数的求值,而这就是我所做的。我对这个解决方案的意图......

回答 1 投票 0

Ocaml 测试函数

我制作了这个功能并且它可以工作,但我想知道如何做一个测试这个功能的功能(测试功能) 让 color_choice(t : t_color t_array) : t_color = (get_value(t)).(Random.int(

回答 0 投票 0

OCaml 记录模式匹配

我有这个: type 'a queue = {f : 'a stream;长度:整数; r : '一个流; lenr : int};; 让空:'一个队列= {f = Nil;长度 = 0; r = 零; lenr = 0};; 让 is_empty (q :'a queue) = 将 q 与 ...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.