ocaml相关内容

如何进行模式匹配,执行一个功能,然后在执行的功能上进行模式匹配,以执行另一个功能

我想编写一个函数,将数组中的元素从一个位置复制到另一个位置. copy_obj是执行此操作的函数.现在,我得到了一个表示要复制的元素位置的指针列表,因此,我需要在列表中的每个元素上应用函数copy_obj以及我应该开始复制的空闲位置的地址.在我的代码中是f. 考虑到函数copy_obj返回一对地址,并且其中一个是free的更新值,我需要使用它来递归地调用列表中其他元素上的函数. 下面是 ..
发布时间:2020-05-19 19:22:25 其他开发

如何绘制自动机图?

我根据许多人给我的建议使用了graphviz,但遇到了问题.我想使用Format.module在ocaml中写一个点,并且我有一条记录,其中包含五个字段,这些字段定义了一个自动机,该自动机包括由int*char*int列表表示的过渡和由列表.第一个字段是初始状态,它是一个int.我还定义了一个函数成员,该成员接受一个参数并测试它是否是给定列表的成员.我该如何做才能写出一个完整的点来识别初始状态,并 ..
发布时间:2020-05-19 19:22:21 其他开发

Ocaml:此表达式的类型为'a list *'a list->布尔值,但期望表达为布尔值类型

我刚刚开始学习Ocaml,并且正在使用递归函数. Ocaml编译器告诉我,在“如果h1 = h2则帮助程序t1 t2"中递归调用helper会导致错误:此表达式的类型为'a list *'a list-> bool,但是期望表达式为bool类型.我知道这是在告诉我编译器期望一个布尔值,但是却得到了一个返回布尔值的函数.但是我不知道该如何解决.感谢您的帮助 let rec a_func l = ..
发布时间:2020-05-19 19:22:18 其他开发

OCaml非阻塞客户端套接字

有没有一种以非阻塞方式使用客户端套接字的方法. 例如,如果我为客户端创建了一个套接字以在服务器上进行连接,并且在该套接字上进行了递归recv,则在没有数据发送且连接正常时,Unix.recv的最后一次调用将被阻止没有被服务器关闭. 在C语言中,您可以为两个都指定标志: socket()并使用SOCK_NONBLOCK标志与套接字类型进行“或"操作 带有MSG_DONTWAIT标 ..
发布时间:2020-05-19 19:22:13 其他开发

ocaml toplevel引发错误无界模块

我安装了OCAML和OPAM,然后使用OPAM安装了诸如ocaml-http之类的库.当我尝试打开模块Http_types时,ocaml顶级抛出了错误的无界模块. 我尝试在/home/ubuntu/.opam/opam-init/variables.sh 中设置CAML_LD_LIBRARY_PATH 在opam初始化过程中生成的旧文件: CAML_LD_LIBRARY_PATH ..
发布时间:2020-05-19 19:22:07 其他开发

如何检查两个“指针"?在查看清单时见面?

例如,我有一个列表[1; 2; 1; 3; 2; 4; 1; 5; 6; 8;...].列表中有重复的元素. 然后,我们通过两个虚拟指针浏览列表. 一个指针a从头开始,速度为2. 另一个指针b从列表中间的某处移动,速度为1. 那么如何检查a是否与b会面? 例如: a从[1; 2; 1; 3; 2; 4; 1; 5; 6; 8;...] 开始 b从索引1开始, ..
发布时间:2020-05-19 19:22:05 其他开发

ocaml中的急切副作用(printf)

新手问题: 说我有一个非常慢的函数do_sth,它应用于范围1到n.我想在循环时打印do_sth i的结果.这该怎么做?天真尝试失败,因为这些值仅在整个循环之后才会打印: let rec loop i = if i>1000 then 0 else let fi = do_sth i in ( Printf.printf "%d %d\n" i fi; ..
发布时间:2020-05-19 19:22:01 其他开发

是什么导致语法错误?

我正在尝试实现此算法,但是在第12行上却不断出现语法错误,但是我无法查明是什么原因引起的.我是ocaml的新手,我们将不胜感激. "要通过Eratosthenes的方法查找所有小于或等于给定整数n的素数: 创建一个从2到n的连续整数列表:(2,3,4,...,n). 最初,让p等于2,第一个素数. 从p开始,通过以p的增量计数到n来枚举其倍数,并在列表中标记它们(它们将是2p,3p,4 ..
发布时间:2020-05-19 19:21:59 其他开发

是什么|>做?

来自 Real World OCaml ,第38页(请参见# let (|>) x f = f x ;; 并将其应用于字符串: # let path = "/usr/bin:/usr/local/bin:/bin:/sbin";; val path : string = "/usr/bin:/usr/local/bin:/bin:/sbin" # String.split ~on: ..
发布时间:2020-05-19 19:21:53 其他开发

Frama-C:获取语句的值

我想开发一个Frama-C-Plugin,在其中获取当前语句的值. 借助此帖子 Frama-C插件开发:获得价值分析的结果我能够打印语句的值,但是指针并未以我需要的方式显示. 借助注释,我能够打印整个状态(不仅是语句的变量). 我可以结合这两个:获取语句的变量,但也可以使用取消引用的指针(值)吗? 例如,在语句x=1之后打印非指针将导致x -> {{ NULL -> {1} ..
发布时间:2020-05-19 19:21:46 其他开发

OCaml:另一个函数中的调用函数

在一个模块中,我有一个用户定义的类型和一个返回字符串的递归函数.然后,我想创建一个函数,该函数将创建该类型的对象并将其传递给该函数.这是我拥有的代码的一个简单示例: type species = Animal of string | Mammal of species | Fish of species let rec species_to_string = fun ..
发布时间:2020-05-19 19:21:44 其他开发

Ocaml-错误的类型

我想检查树是否平衡(这意味着每片叶子都在同一深度),但类型有问题. type 'a tree = Node of 'a * 'a tree list;; let rec fold_tree f (Node (x,l)) = f x (map (fold_tree f) l);; let is_balanced t = fst( fold_tree (fun _ ..
发布时间:2020-05-19 19:21:41 其他开发

如何在ocaml中定义序列类型

type 'a node = | Nil | Cons of 'a * 'a t and 'a t = unit -> 'a node type 'a mappable = 'a t 'a t = unit -> 'a node在类型声明中是什么意思?我认为在ocaml的类型声明中,我们只能进行枚举或调用构造函数. 谢谢 解决方案 unit -> 'a node是不带参数并 ..
发布时间:2020-05-19 19:21:38 其他开发

将数组移位k的函数语法错误

我正尝试将数组k向左移动. 这是我的代码.但是我在shifted;;行上遇到了编译错误. let shift_left (arr: array) (kk: int) = let size = Array.length arr in let k = kk mod size in let shifted = Array.make size 0 in fo ..
发布时间:2020-05-19 19:21:36 其他开发

OCaml函数评估算术表达式

我已经写了数学计算器程序的一部分.我已经完成了程序的解析器, 因此,当用户以字符串形式输入数学表达式时,我已经有了一种获取方法 相应的以下类型的数据结构: type expression = | Term of int | Addition of expression * expression | Multiplication of expression * expression | Sub ..
发布时间:2020-05-19 19:21:30 其他开发

构建LablGtk失败

我正在尝试构建LablGtk以启用从源构建CoqIDE. 我从此处使用了lablgtk-2.18.7.tar.gz.当我尝试configure-make时,出现此错误(以及其他类似错误): File "gdk.ml", line 346, characters 2-55: 346 | external create : len:int -> t = "ml_point_array_new ..
发布时间:2020-05-19 19:21:27 其他开发

OCaml多态递归错误

给出以下类型: type _ task = | Success : 'a -> 'a task | Fail : 'a -> 'a task | Binding : (('a task -> unit) -> unit) -> 'a task | AndThen : ('a -> 'b task) * 'a task -> 'b task | OnError : ('a -> 'b task ..
发布时间:2020-05-19 19:21:24 其他开发