OCaml是一种严格的静态类型函数式编程语言,专注于表达性,正确性和效率。
因此考虑获取 [1; 2; 3; 4; 5; 6; 7; 8; 9] 并将其重塑为 [[1; 2; 3]; [4; 5; 6]; [7; 8; 9]]。你会如何在 OCaml 中做到这一点?我想要一个简单的功能或支架上的东西......
鉴于: 模块 FunMonad = 结构 输入 'a t = (unit -> 'a) 让 return x = fun () -> x 让绑定 m f = fun () -> ((f (m ())) ()) (* 解释为什么不:让绑定 m f = f (m ()) *) 让 (&...
给定这个选项monad: 模块 OptMonad = 结构 输入'a t = '一个选项 让返回 v = 一些 v 让绑定 m f = 将 m 与 |一些 v -> f v (***) |无 -> 非...
类型错误:类型为 (string * terme) 列表的预期表达式,但收到类型为 ((terme -> terme) * (terme -> terme)) 列表的表达式
我遇到过这个错误,无法解决。 输入术语 = |字符串变量 |字符串符号 | terme * terme 的函数 异常检查 让 rec sub v t = 函数 | Var v' 当 v = v' -&...
List monad 和 bind with list.concat 和 list map?
给定这个列表 monad: 模块 ListMonad = 结构 输入 'a t = 'a 列表 让返回 x = [x] 让绑定 m f = List.concat (List.map f m) 让 (>>=) = 绑定 让零 = [] (* 中性元素 ...
我得到了这个模块类型,我被要求创建一个空的 tree_zipper,但我认为树拉链的以下实现是不可能的: 模块类型 TREE_ZIPPER = 签名 输入'a
我正在尝试编写一个接受列表的函数,并返回列表中连续重复元素的数量。 例如,给定 [1;2;3;3;4;4;5],该函数应返回 2 这是……
让下面的树拉链: type 'a ntree = 'a * 'a ntree 列表的节点 输入'上下文= |顶部 | 'a ntree list * 'a * 'a context * 'a ntree list 的上下文 输入'a tree_zipper = TZ ...
给定一个拉链: 输入 'a zipper = 'a list * int;; 异常为空 让空 = ([], 0) 给出的删除操作是: 让 remove_exn (l, n) = 让 rec rem ll nn = 将 (nn, ll) 与...匹配
Zipper 数据结构移除操作,全部移除索引 i 后面还是只移除一个榆树?
给定一个拉链: 输入 'a zipper = 'a list * int;; 异常为空 让空 = ([], 0) 给出的删除操作是: 让 remove_exn (l,n) = 让 rec rem ll nn = 匹配 (nn,ll) 与 | (...
将函数从使用两个 `let` 和 `in` 转换为只使用一个 `let`
我发现这种类型的拉链和插入函数定义如下: 输入 'a zipper = 'a list * int;; 异常为空 让空 = ([], 0) let insert ((l, n): '一个拉链) (a: 'a) : '一个拉链 = 让...
我发现这种类型的拉链和插入函数定义如下: 输入 'a zipper = 'a list * int;; 异常为空 让空 = ([], 0) let insert ((l, n): '一个拉链) (a: 'a) : '一个拉链 = 乐...
在 ocaml 中对负浮点数使用 atan2 时出现解析错误 #atan2 -2。 3.;; 第 1 行,字符 0-5: 错误:此表达式的类型为 float -> float -> float 但表达是exp...
为什么 Ocaml 中的“断言”不被视为 bool->unit 类型的函数,而是一个关键字?
我不明白为什么“断言”不被视为 bool->unit 类型的函数,而是关键字。 # 断言 (2=2) ;; - :单位=() #断言;; 第 1 行,字符 6-8: 错误:语法错误
zipper:返回从焦点位置开始的子列表 |但为什么当 n > 0 时?
我找到了这种类型的拉链并得到了这样定义的函数: 输入 'a zipper = 'a list * int 异常为空 让空 = ([], 0) (* get: 返回从焦点位置开始的子列表 *) 让 rec g...
给定一个函数 m(a, b) = 1 如果 n = 0 并且 m(a, b) = m(a-q, m(a,b)) 否则。 我想用 thunk 来控制这个函数的求值,而这就是我所做的。我对这个解决方案的意图......
我制作了这个功能并且它可以工作,但我想知道如何做一个测试这个功能的功能(测试功能) 让 color_choice(t : t_color t_array) : t_color = (get_value(t)).(Random.int(
我有这个: type 'a queue = {f : 'a stream;长度:整数; r : '一个流; lenr : int};; 让空:'一个队列= {f = Nil;长度 = 0; r = 零; lenr = 0};; 让 is_empty (q :'a queue) = 将 q 与 ...