ocaml

    2熱度

    1回答

    我開始學習OCaml語言。你能告訴我爲什麼這段代碼顯示錯誤嗎? let unite x = if x < 100 then x mod 10 else if x >= 100 then x mod 100;; let dizaine x = if x < 100 then x/10 else if x >= 10 then unite(x/10);;

    2熱度

    1回答

    問題 爲什麼 val of_bindings : (key * '_a) list -> '_a t val of_bindings : (key * 'a) list -> 'a t 不同的簽名? 語境 我有一些地圖擴展實現: MAPEXT.ml: module type T = sig include Map.S val of_bindings : (key * '

    0熱度

    1回答

    我想在OCaml中實現一個隊列結構,現在正在編寫一個測試值是否在隊列中的函數。我原本寫了一個正確的 - 或者至少我認爲這是一個正確的 - 實現的功能。但是當我測試它時,我會得到意想不到的測試失敗。也就是說,當隊列是空的時候它會返回false(一件好事),但在其他情況下也會返回false,無論隊列是否爲空,以及隊列是否包含該值。所以我用這種愚蠢的方式重新編寫了這個函數(其中Some h -> tru

    0熱度

    1回答

    當我運行以下代碼時,出現語法錯誤,但據我所知,語法是正確的。這將嘗試實現隊列結構,其中函數from_list將列表轉換爲具有相應值的隊列。我寫了str_of_int_q來打印隊列的內容。 x和y應該是兩個節點,頭部爲x,尾部爲y。 ;; open Assert type 'a qnode = {v: 'a; mutable next: 'a qnode option} typ

    0熱度

    1回答

    我正在用Ocamllex爲Brainfuck編寫一個詞法分析器,爲了實現其循環,我需要更改lexbuf的狀態,以便它可以返回到流中的前一個位置。上Brainfuck(可跳過) 背景信息 在Brainfuck ,環路是通過一對方括號與 完成了以下的規則: [ - >繼續進行,並評估下一個標記 ] - >如果當前單元格的值不是0,則返回匹配的[ 因此,下面的代碼的計算結果爲15: +++ [ > ++

    0熱度

    2回答

    我正在OCaml做一個學校任務,我對錶達的含義有疑問。 當定義功能,如果我舉個例子,寫道: let iter : int * (int -> int) -> (int -> int) = fun (n,f) -> 是什麼(int -> int)意思?我明白函數本身收到一對作爲參數,但我不完全明白括號是什麼意思...

    2熱度

    2回答

    你如何製作一個匿名遞歸函數(例如階乘n的簡單事情?)我聽說過它是可能的,但不知道如何使它在OCaml中工作。 let a = fun x -> .... 我只是不知道如何繼續下去......

    0熱度

    1回答

    我在查找OCaml中典型指數函數的更快版本時遇到了問題。這裏有一些指引,我試圖遵循: 不是的expt b n ==> b * (b * (b ...)典型的遞歸指數版本的函數接收兩個參數B和N,基本上採取分而治之的立場。 如果n爲偶數,則fastexpt b n => (b^(n/2))^2否則,如果n是奇數則fastexpt b n => b * (b^(n - 1)) 下面是我迄今編寫的代碼:

    0熱度

    1回答

    這是我的函數映射在二叉樹 type 'a btree = Empty |Node of 'a * 'a btree * 'a btree let rec treemap t f = match t with |Empty -> Empty |Node(root,left,right)-> Node(root f, treemap left f, treemap

    2熱度

    1回答

    我最終試圖做的事情是1)限制對模塊(因此mli文件)的可見性和2)定義一個函子,其中參數具有「規範實現「,它作爲一個ml/mli對生活在源碼樹中,並堅持參數具有與此規範實現相同的形狀。 假設我有一個包含字符串連接 (* concat.ml *) type t = string let concat x y = x^y 單一功能的文件concat.ml和我有一個接口,它 (* concat.