ocaml相关内容
我喜欢在终端中使用 ocaml 来从每个 ocaml 命令中获取交互式结果或类型,例如: 目标 Caml 版本 3.11.2# 让 a = 5;;值 a : int = 5 但是当命令很多的时候,我们把所有的都放在一个像test.ml这样的文件里,然后编译它是正常的.目前,我使用 ocamlc -o test test.ml.但是当我在终端中做test时,却看不到每个声明的类型,很遗憾.
..
OCaml 中是否有这样的机制,以便我可以根据存储函数名称的变量动态调用函数,就像我在其他脚本语言中可以做的那样? 例如,我写了一个函数 foo().我将字符串常量“foo"存储在变量“x"中的某处.在 JavaScript 中,我可以像这样 window[x](arguments); 来动态调用方法 foo().我可以在 OCaml 中做类似的事情吗? 解决方案 不,这不是 OCa
..
我定义了两组标识符 IDENTIFIER_ONE 和 IDENTIFIER_TWO,它们都是 IDENTIFIER 的专有子集.我想编写一个解析器: "i1(arg) EOS"无法解析(1)“i2(arg) EOS"可以解析(2)“i1(arg) = value EOS"可以解析(3)“i2(arg) = value EOS"可以解析(4) 其中 i1(resp., i2) 属于 IDENTI
..
module MapHelpers (Ord : Map.OrderedType) = struct包括 Map.Make (Ord)让 add_all a b = fold add a b结尾 有效但看似等效 module MapHelpers (Ord : Map.OrderedType) = struct包括 Map.Make (Ord)让 add_all = 折叠添加结尾 编译失败
..
类备份=对象(自我:'mytype)val 可变副本 = 无方法保存=复制}方法恢复 = 与 Some x 匹配副本 ->× |无 ->自己结尾;; 在这段代码中,有几处我不太明白. (self: 'mytype) self表示递归类,但是'mytype的作用是什么? 某些 {} 获取副本仍然为 None 的备份副本,并将其分配给副本? 谢谢!!
..
我正在尝试使用 opam install graphics 安装图形,但出现以下错误留言: $ opam 安装图形将执行以下操作:∗ 安装图形 5.1.1↻ 重新编译ocamlfind 1.9.1 [使用图形]↻ 重新编译 base-bytes base [使用 ocamlfind]↻ 重新编译 ounit2 2.2.4 [使用基字节]↻ 重新编译 ANSITerminal 0.8.2 [使用基
..
我正在研究这种编程语言“Ocaml";我有一些麻烦,因为我阅读了官方的 ocaml 文档,但我不明白如何使用: ";"和“;"和“在"特别是在函数定义里面. 这是我的代码: 让 abs_val 值:int ->整数 =让 abs_ret = ref 0 ;如果值 >= 0然后 abs_ret := 值否则 abs_ret := -value ;让返回:int = abs_ret;;p
..
我正在尝试从源代码安装 google-drive-ocamlfuse,但是 prereuiqisites 让我有点困惑.我遇到了这个错误: [bf@localhost google-drive-ocamlfuse]$ dune build @install文件“/home/bf/.opam/default/lib/gapi-ocaml/dune-package",第1行,第11-15个字符:1
..
这就是我想要实现的目标,使用递归返回到值低于给定值的列表: # list_below 3 [7;1;0;3];;- : 整数列表 = [1;0]# list_below 1 [-7;1;0;3];;- : 整数列表 = [-7;0]# list_below 9.0 [4.2;3.6;5.0;12.8];;- : 浮动列表 = [4.2;3.6;5.0] 这是我到目前为止所写的内容,它似乎没有返
..
以下代码在 https://try.ocamlpro.com/ 打开 Printf让 l = ref [] in对于 i = 3 downto 0 dol := i :: !l完毕;List.iter (printf "%d ") !l 但是在 Linux 上使用 ocamlopt 或 ocamlc 编译器时会触发语法错误. ocamlc array.ml -o array let l =
..
我正在尝试使用 OCaml 中的可组合错误处理中的技术(错误的多态变体的结果类型)对于我编写的一些代码.我尝试使用的函数类型如下所示: val parse : parser ->令牌列表 ->(Nominal.term, [> `ParseError of string ]) 结果.tval lex : 词法分析器 ->字符串 ->(token list, [> `LexError of str
..
有没有办法同步执行一个用Lwt库制作的线程? 具体来说,我正在尝试向服务器运行一系列发布请求,以计算某些值并返回结果. 基于对这个问题的回答: 如何在OCaml? 我可以使用低级方法(套接字)或使用 Cohttp 库来实现.低级方法的优点是直接和直接,但我宁愿坚持使用 Cohttp(不需要读/写循环等).不幸的是,我对 Lwt 完全陌生,并且基于:https://mirag
..
我使用的是 Linux Slackware 14.2、opam 版本 1.2.2、ocaml 4.03.0 并想安装 why3 模块.据我在网上看到的why3包的最新版本是1.2.0. 但即使我跑了 opam 更新 它仍然建议我安装why3 1.0.0. 我应该怎么做才能更新包列表? 我如何以 root 身份安装why3 模块系统?是否足够安全? 解决方案 您的 op
..
与 Python 的“with"语句对应的 OCaml 是什么? with open('test.txt', 'r') as f:# 用 f 做事#此时f会一直关闭,即使有异常 即:什么是OCaml中的首选方式来安全地确保某个资源(打开的文件、数据库连接、HTTP连接等)总是在某个时间点被释放?等待垃圾收集器在这里是没有选择的,异常不应该阻止资源被释放. 当然,在 OCaml 中,您始
..
我在 Ocaml 中有这个程序,它从键盘读取一行并返回一个 int : let get_int() =print_string "插入一个数字\n";;让 input = read_line() 输入让 return__ = int_of_string( input );;print_string "我会打印你写的内容:";print_int ( get_int() );print_string
..
(这是多态变体和 let%bind 类型错误的扩展/提炼) 考虑以下代码: 版本 1: let x : [>`Error1 ] = (`Error1 : [> `Error1 ])让 y : [>`错误1 |`错误2] = x 版本 2: let x : [>`Error1 ] = (`Error1 : [ `Error1 ])让 y : [>`错误1 |`错误2] = x 版
..
为什么在下面的代码中Proc.num_stack_slots.(i) 末尾有一个分号?我认为分号是 OCaml 中的分隔符.我们可以总是在块的最后一个表达式中添加一个可选的分号吗? for i = 0 to Proc.num_register_classes - 1 doProc.num_stack_slots.(i) 参见 https://github.com/def-lkb/ocaml-
..
type int_tree =|叶|intNode * int option * int_tree * int_tree * int_tree让 empty_int_tree = IntLeaf让 rec int_insert x t = 匹配 tIntLeaf ->(x, None, IntLeaf, IntLeaf, IntLeaf) |IntNode(a,None,c,d,e) ->if x
..
我有以下两行代码: 让 a = [1;2;3;4;5;6;7;8;9;0]print_string (String.concat " " (List.map string_of_int a)) 它给了我这个错误: 文件“test.ml",第 65 行,字符 0-0:错误:语法错误 但是,如果我以双分号结束该行: 让 a = [1;2;3;4;5;6;7;8;9;0];;print
..
我可以通过以下方式过滤我的地图关键: module PairKeys =结构类型 t = 字符串 * 字符串让比较 (x0,y0) (x1,y1) =匹配 String.compare x0 x1 与|0 ->String.compare y0 y1|c ->C结尾模块 StringMap = Map.Make(PairKeys);;....让 put_key_values_into_a_lis
..