ocaml

    1热度

    2回答

    因此,我在我的程序中使用Jane Street的Core.std来处理某些事情,但仍想使用标准OCaml映射。但是,当我调用像mem这样的函数时,它期待着Core.std版本的签名。我如何克服这个障碍?谢谢! open Core.Std open Map module PortTable = Map.Make(String) let portTable = PortTable.empty

    3热度

    1回答

    我试图创建一个表示空的二叉树(基本上,只有它的骨架)的类型。然后这个类型的变量将被用模式匹配来迭代。 我知道如何从标准类型(int,string等)的多态变体中实例化一个固定 - 请参见下面的int_tree。但是,目前尚不清楚是否可以从多态一个空的变体(empty_tree下面的行在编译过程中失败并伴随SyntaxError)。 的代码如下: type 'a binary_tree =

    1热度

    1回答

    我有以下简单的OCaml异步作业,它应该写入文件并终止进程。 Unix.openfile "foobar" ~mode:[`Creat;`Rdwr] >>= fun fd -> let wr = Writer.create fd in Writer.write wr "this is a test"; Unix.close fd >>= fun() -> exit 0 然而,似乎在

    1热度

    2回答

    在OCaml中编写以下代码的惯用方式具有更好的可读性? let big_function arg = let big_helper_fn acc = function | p -> ... ... ... ... foo(arg) ... ... | _ -> ... in let

    0热度

    1回答

    想象一下,我有一系列模块A1..AnB1..Bn所有模块都是完整的编译单元。现在我定义与这些模块的两个新模块作为嵌套: (* A.mli *) module A : sig module A1 ... module An end (* A.ml *) module A1 = A1 .. module An = An (* B.mli *) modul

    1热度

    1回答

    假设我有一个功能,如: query_server : Server.t -> string Or_error.t Deferred.t 然后我产生递延查询列表: let queries : string Or_error.t Deferred.t list = List.map servers ~f:query_server 如何得到第一个查询不失败的结果(否则有一些错误)。基本上,我想要

    0热度

    1回答

    我对Ocaml和ML一般都很陌生,而且我一直有一个非常根本的问题。我正在使用模式匹配,并且在一个匹配中,我想打印两个或多个连接的语句。例如。 chan^"("^var^")"^op2^(poc p); chan^"("^var^")"^op^(poc p) let processoperatorchange2 t2s2 proc2 op op2= let rec poc2 p = mat

    0热度

    1回答

    我有不同的用户定义类型,我需要在一个集合中放置。在那一刻,我知道,定义一组模块,我可以做这样的事情: module Mut = Set.Make(struct type t = string ;; let compare = compare end);; 但是是有可能的,而不是字符串,有我自己的用户定义类型,像这样?: module Mut = Set.Make(struct type t =

    4热度

    1回答

    我正在通过AST变换增长一种小型编程语言。也就是说,从虚拟机开始,慢慢添加一些帮助程序员的层。 由于每一层都知道如何将其新的类型,我做了这样的事情: module AST0 = struct type t = [ | `Halt | `In | `Out | `Add of (int * int * int) | `Sub of (in

    1热度

    2回答

    我想知道是否有反正我可以在另一个函数中调用相同的函数,但使用不同的参数。这是我想要调用的函数的代码。 let concattoset s set = SS.add s set 有了这个功能,我有一个调用这个函数,但有可能做这样的事情的另一个功能: let op_change p set = concattoset (Format.asprintf "%a" processoperatorcha