ocaml相关内容
我正在尝试编写一个函数,该函数可以动态生成另一个具有动态指定模式以匹配的函数,而我对如何上手一无所知. 基本上,顶级函数使用字典,其中键与值列表匹配,我想返回一个函数,该模式将那些键与值匹配. 例如,我会传入像 [("a",[1; 2; 3]);这样的字典.("b",[3])] ,我会得到一个看起来像 的函数 功能|"a"->[1; 2; 3]|"b"->[3] 有人可以指出我
..
编写这种模式匹配时为什么会出错: type t = int的A |浮点数B令f =函数|(A i | B f)->真的|_->错误的 或 让f =函数|我ff真的|_->错误的 错误:变量f必须出现在此|的两边.模式 让f =函数|(A i | B i)->真的|_->错误的 或 让f =函数|我B i->真的|_->错误的 错误:此模式与float类型的int类型的值匹
..
我想解析并编译我在运行时编写的函数,例如,我在运行时生成了以下字符串: let str ="fun x y z->[X;y;z;]" 我正在寻找可以让我做类似的事情的东西: let myfun = eval str(* eval返回字符串中代码返回的值,因此myfun将具有以下类型:'a->'a->'a->'一个列表*) 在OCaml中有没有办法做到这一点?我遇到了Dynlink,
..
问题如下:给定定向加权图,起始节点,终止节点和数字k,验证是否存在从起始节点到终止节点的长度至少为k的路径. 这是我写的代码,它是正确的,但仅在特定图中显示.例如,带有 weights1 的 g1 如下: x :: path)(List.filter(函数x-> not(List.mem x路径))(succ(List.hd路径)))在let rec aux last_node =函数中[]->
..
我正在尝试编写类似于以下内容的代码: let [a;b] =(* 身体 *)[1;2] 我只想针对模式 [a;b] ,而不是身体或容身之外的任何物品.我尝试将警告属性设置为禁用警告,但以下任何一项均无效: let [@警告"-8"] [a [@警告"-8"]; b [@警告"-8"]] [@警告"-8"] =[1; 2] [@警告"-8"][@@ ocaml.warning"-8"]
..
我正在尝试做一些应该很简单的事情:向URL发出GET请求.但是,当我搜索如何执行此操作的示例时,通常会遇到类似有人知道如何使用OCaml发出简单的HTTP请求吗?我是OCaml新手,有一些Haskell经验. 注意: 使用最低级别的OCaml的解决方案将是理想的.我已经看过使用过的Cohttp库,但是我对本机(?)HTTP OCaml库或类似的东西更感兴趣. 作为对@antron
..
上下文: 我正在尝试使用一流的模块在OCaml中实现类似OOP的可观察模式.我有一个包含模块列表的项目,并希望通过观察扩展它们而无需更改.为了最大程度地减少代码重复,我创建了 Subject 模块,并计划将其用作此扩展的通用方式的一部分(在项目上下文中).我声明了三种模块类型: 观察者: module type OBSERVER = sig type event type
..
我想了解表达式在Ocaml中的工作方式. 例如,我有: type expr = Int of int | Var of string | Sum of expr * expr | Diff of expr * expr | Mult of expr * expr | Div of expr * expr 如何识别元素是否为表达式? 我想到了类似expr -> expr
..
如果我在Ocaml函数内部有一个或多个递归函数,如何在不退出主函数的情况下调用它们,而将它们的值作为主函数的返回值? 我是Ocaml的新手,所以我会尽力向我解释一下... 如果我有: let function = let rec recursive1 = ... ... let rec recursive2 = ... ... 如何在function中称呼它们为“嘿,您看到
..
根据此答案,F#支持OCaml样式类型参数.问题中的示例是: type 'a NestedList = List of 'a NestedList list | Elem of 'a 但是,我在F#文档的任何地方都找不到该语法,而且我也无法让F#编译器接受我给出链接的答案中的语法. 编译器不接受使用多个参数的尝试: type ('a * 'b) SomeType = ('a * '
..
我想知道是否有任何方法可以使OCaml编译器报告有关未使用的功能的警告?我用谷歌搜索,但是关于这个功能讨论的话题不多。 特别是,在下面的程序中,有两个函数“ foo”和“ bar”被声明,但在“ _”函数中未使用“ bar” 。因此,我认为OCaml编译器应将“ bar”报告为未使用的函数。 let foo xy = x + y let bar xyz = x + y + z
..
如何将命令行参数传递给ocaml调试器?我正在寻找类似于gdbs --args或r ...或params ...
..
我正在使用带有原型remaining thelist的函数,该函数需要具有签名val remaining : char list -> int * char list = .我是Ocaml的新手,我不明白如何使Ocaml函数仅接受一个列表,并同时输出一个int和一个列表.这是我目前正在使用的代码. let rec remaining thelist= match thelist w
..
我想定义一个keyword_table,它将一些字符串映射到一些标记,并且我想使此表对于parser.mly和lexer.mll都是可见的. 该表似乎必须在parser.mly, 中定义 %{ open Utility (* where hash_table is defined to make a table from a list *) let keyword_table
..
我想实现一个给定两个字符串s1和s2的检查功能,该功能将检查s2是否为caesar cipher of s1.界面必须看起来像string->string->bool. 问题是我不允许使用除String.length之外的任何字符串函数,那么我该如何解决呢?我不允许任何list array,iterations.仅recursions和pattern matching. 请帮助我.而且
..
我正在尝试编写一个函数,该函数将返回列表中的第二个最小数字.我不断收到语法错误,但我无法真正查明问题所在.我可以在这方面寻求帮助吗? 已删除的代码 解决方案 您忘记使用in关闭 local let绑定.正确的(和缩进的)代码应为: let second_smallest_helper1 lst= let second_smallest_helper2 currentMini
..
我有一段代码可以执行以下操作:将n个元素的列表中的3个元素分组.主要功能称为group_by_3.例如,执行group_by_3 [1;2;3;4;5;6;7]将给我([1;2;3],[4;5;6],[7]). let group_by_3 lst = let accum = ( [], [], 0 ) in let f (all_groups, current_group, s
..
我有一些基本的ocamllex代码,由我的教授编写,似乎还不错: { type token = EOF | Word of string } rule token = parse | eof { EOF } | [’a’-’z’ ’A’-’Z’]+ as word { Word(word) } | _ { token lexbuf } { (*module String
..
我有代码: let join a ~with':b ~by:key = let rec a' = link a ~to':b' ~by:key and b' = link b ~to':a' ~by:(Key.opposite key) in a' 及其编译结果是: 错误:这种表达形式不能作为的右侧使用 `let rec'构建完成 我可以将其重写为:
..
let t = Unix.gettimeofday() let rec nothing i = match i with | 1000000000 -> 1 | _ -> nothing (i+1) let () = Printf.printf "%d %fs\n" (nothing 0) (Unix.gettimeofday() -. t) 我使用命令 ocamlc uni
..