ocaml

    0热度

    1回答

    我一直在使用oasis来使用一些外部程序包来构建我的项目。现在我也想使用Jane Street的Core包。但是,为了与Core编译,您必须将-thread标志传递给ocamlfind,例如,像这样: ocamlfind ocamlc -linkpkg -thread -package core foo.ml -o foo 我怎么能告诉oasis添加-thread标志?现在,我的_oasis文

    1热度

    1回答

    我的快速排序代码适用于的N(列表的大小)的一些值,但对于大的值(例如,N = 82031)由OCaml的返回的错误是: Fatal error: exception Stack_overflow. 我做错了什么? 由于OCaml不支持大值的递归函数,我应该创建一个迭代版本吗? let rec append l1 l2 = match l1 with | [] -> l2

    0热度

    1回答

    对不起,我不知道如何给一个适当的标题为这个问题: 如果我做的: let f1= function 1 -> failwith "a" | s ->s;;(*you can just use f1 x=x, just want to let f1 to have an exception case*) let f2 = let f1= try(print_string "s

    5热度

    2回答

    如何创建OCaml/F#DU类型,其案例是其他案例的子集? 例如,我想创建一个包含不同符号声明类型的符号表,例如程序类型,变量和函数。乍一看,我可以看到一个变量包含它的类型,函数也包含一个类型和许多参数变量。所以我想用1 DU,而不是向分隔条件多条记录或别名: type Symbol = | TypeSymbol of id:string | VariableSymbol of

    0热度

    1回答

    我想观察某些文件的变化,并在发生这种情况时对它们做些什么

    2热度

    1回答

    我想用OCaml中的参数解析命令行选项。 标准库的模块Arg似乎做我需要的一切,并有一些教程解释如何使用此模块。 我的问题是,当一个选项的参数丢失时,它们似乎都共享相同的奇怪行为。例如,从与this example./a.out -d执行程序产生以下输出: ./a.out: option '-d' needs an argument. usage: ./a.out [-b] [-s string

    2热度

    1回答

    我想cohttp open Core open Async open Cohttp open Cohttp_async let cli_hdr url = let uri = Uri.of_string url in let%bind resp_head = Cohttp_async.Client.head uri in resp_head |> Respo

    0热度

    3回答

    我从this question得知可以使用模式匹配与记录。但是,我注意到我在尝试匹配不同类型的记录时遇到了问题。 我在这个例子中的目标是能够区分不同的记录。我得到了一个记录,我不完全确定它是哪种类型,我试图用模式匹配来解决它。 这里有一个简单的例子: module IceCream = struct type t = { temperature: float; top

    1热度

    1回答

    我在OCaml中为一个学校项目实现了我自己的版本。它被定义为这样的: type 'a my_list = | Item of ('a * 'a my_list) | Empty ;; 我的目标是实现从列表模块20层的功能,并且第n是给了我很多的辛勤工作。它是一个递归函数,它也称为hd和长度函数。下面是代码: let rec length my_list = ma

    0热度

    1回答

    我正在学习ocaml,所以它可能是微不足道的。 当我尝试建立这个代码的可执行文件: open Core.Std let build_counts() = In_channel.fold_lines stdin ~init:[] ~f:(fun counts line -> let count = match List.Assoc.find counts line