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