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