[英]Live-variable analysis in functional style
我正在嘗試在 OCaml 中實現實時變量分析。 我已經構建了控制流圖,但我無法想出以純函數式方式計算數據流方程的方法。 直接執行方程會導致無限遞歸。 另一方面,迭代地進行將需要副作用來重新分配集合。 最小(非工作)示例:這幾乎是數據流方程的直接實現。open List (* ...
[英]Live-variable analysis in functional style
我正在嘗試在 OCaml 中實現實時變量分析。 我已經構建了控制流圖,但我無法想出以純函數式方式計算數據流方程的方法。 直接執行方程會導致無限遞歸。 另一方面,迭代地進行將需要副作用來重新分配集合。 最小(非工作)示例:這幾乎是數據流方程的直接實現。open List (* ...
[英]Beginner with ocaml, I've got a type error problem (as every beginner) and can't work it out
錯誤:此表達式的類型為 'a * 'b 但表達式應為 float 類型我試圖使用 2 個數字 function 之間的最大值來獲取 4 個數字的最大值... ...
[英]Cannot install dune on MacOS for OUnit2
因此,我需要安裝 OUnit2,並且我在運行 MacOS Monterey 12.6 的 2015 MacBook Pro 上。 我有自制軟件,我有 Ocaml,我有 opam。 Dune 是 Ounit2 的依賴項之一,所以顯然我需要它來擁有 OUnit2。 然而,這就是我得到的: 到目前為止, ...
[英]What does this function in OCaml do?
這個 function 在 OCaml 中做什么? 我尤其對這條線感到困惑: ...
[英]Why cant I do [1] :: [1] but [1] :: [1] :: []
為什么我不能使用[1]:: [1]而[1]:: [1]:: [] ? 我試着做[1]:: [1] 。 收到此錯誤:Error: This expression has type int but an expression was expected of type int list 當我做[1]: ...
[英]How to display only the program output in utop on the VS Code terminal and not all the instructions one after the other
當我通過選擇所有代碼行然后按Ctrl + Enter在 VS Code 中運行上述程序時,這是終端中顯示的內容: 如您所見,它逐行顯示我的程序行,這使得顯示 160 的 output 需要很長時間我該如何解決這個問題? ...
[英]How do I jump to the start or the end of an OCaml block in vscode?
有時我會看這樣的代碼:let x = (* 1 million lines of code *) let y = (* 5 billion lines of code *) in (* 5 lines of code *) in 我發現自己在右側縮進處使用 cur ...
[英]what is the point of sexp_of_opaque?
在ppxlib它說 sexp_of_opaque x 將不透明類型的值 x 轉換為 S 表達式。 這意味着用戶無需提供轉換器,但無法解釋結果。 這是否意味着我可以在任何類型上調用它? 但是,如果我不能用它做任何事情,那又有什么意義呢? ...
[英]Is this possible to create an operator that evaluates argument left-to-right in OCaml
當您定義一個運算符時,例如let (++) a b = a :: b 當你做let v = foo a ++ bar b bar 在 foo 之前計算。 解決方法是使用 let 表達式,即let e1 = foo a in let e2 = bar b in e1 ++ e2 然而,有時 ...
[英]Different ways of declaring a function
聲明 function 時,我有 3 種不同的方法:let f x = ... let f = (fun x -> ...) let f = function | ... -> (pattern matching) 這是最后一個,我不完全理解它是如何工作的。 我正在做一個 ...
[英]OCaml dune foreign non-C library
我想在我的 dune 項目中使用一個作為.a文件構建的庫(公開一些需要的功能......),但dune 文檔僅指定了如何使用外部 C 代碼。 如何將非 C 構建的庫與沙丘一起使用? 我目前正在嘗試做什么(我看不到如何使用非 C 生成的程序應用文檔的過程): 我的dune文件的一部分: 我的主要程序: ...
[英]How to assert that a function throws an exception in OCaml?
在 OCaml 中我可以捕獲異常: 但是反過來呢,檢測到 function 沒有拋出異常(當它應該拋出時)? ...
[英]Difference between let+, let* and let() in OCaml?
我是 OCaml 的新手,正在學習語法上的細微差別。 由於 OCaml 上的文檔很少,如果有人能解釋不同風格的 let 用法的差異,我將不勝感激。 我試着查看https://dev.realworldocaml.org/toc.html ,但沒有簡單的方法可以在網站上搜索。 谷歌搜索讓我找到了一些 ...
[英]Int64 usage in recursive functions
我用 Ocaml 編寫了以下代碼來嘗試生成前 50 個加泰羅尼亞數字:let rec f n:int64= if n<1 then 1L else (4*n-2)*f((n-1L))/(n+1L) ;; for i = 0 to 50 do Printf.printf "%d\n"(f ...
[英]Evaluation order of let-in expressions with tuples
我關於 ML 的舊筆記是這樣說的 是語法糖 然后 相當於 在哪里每個 (帶或不帶下標)代表一個變量, 每個 (有或沒有下標或上標)代表一個術語,並且 fst和snd分別傳遞一對中的第一個和第二個組件。 我想知道我是否得到了正確的評估順序,因為我沒有注意到原始參考。 任何人都可以((確認或拒絕)和(提 ...
[英]Production Never Reducued Menhir
我已經為此工作了兩個小時,但我無法讓編譯器停止給我這個警告。 下面是我的 parser.mly 代碼。 ...
[英]How to turn a set of sets to list
所以我有兩個模塊,例如。 現在的問題是,如果我在一個元素 B 中有 n 個 A 類型的元素(每個元素都有 m 個 t 類型的元素),我如何將 A 的元素放入列表中? 我知道 set.elements function,但每當我嘗試代碼時 它給出了關於分號的錯誤;; 或關於不正確的類型。 這里有什么問 ...
[英]Errors while iterating and processing the split string in recursive functions
假設我們有一個字符串 和一個類型公式: (又名謂詞邏輯)我們想要: 創建一個 function ,它采用一行,將其拆分並使用公式類型將其轉換為析取。 (有點像 Or(Atom "x1", Atom "x2", Not Atom "x3") 如果我們將第一行作為輸入) 創建一個 function ...
[英]Polymorphic function for phantom GADT type
我是 OCaml 的新手。 我正在編寫一個簡單的匯編程序編譯器。 我在我的 AST 中使用了以下類型。 我認為類型很好,因為它們禁止對不同的(按位)寄存器進行操作。 但現在我有一個問題。 我不知道如何像下面這樣寫 function 我只是不知道如何獲得一個 function,它接受一個字符串(或未明 ...
[英]If statements questions in Ocaml
我正在嘗試在 Ocaml 中編寫以下代碼: 然后我遇到了以下錯誤: 我試過使用begin和end關鍵字。 ...