我正在尋找作業的解決方案,並且代碼實現了一個OCaml函數,它接受兩個參數,但是當它被調用時,它只傳遞一個參數。 let rec func2 r x = match r with
| [] -> []
| (nt,rhs)::t -> if nt = x then rhs::(func2 t x) else func2 t x;;
let func1 r = fun x -
我做了名字的功能是maptree。以下是我的代碼: datatype 'a tree = LEAF of 'a | NODE of 'a tree * 'a tree;
fun maptree(f, NODE(X, Y)) = NODE(maptree(f, X), maptree(f, Y))
| maptree(f, LEAF(X)) = LEAF(f X);
我預計maptree有編
我有一個程序循環一個字符串並打印出每個字符的dir。 我想將這些dir值合計成一個單獨的離散值,我可以打印。 這裏是我當前的代碼: let word = "(())";;
let dir = function
| '(' -> 1
| ')' -> -1
| _ -> 0;;
let z =
(String.iter (fun (c: char) -
我試圖圍繞OCaml的類型推斷符號包裹我的頭。 例如: # let f x = x [];;
val f : ('a list -> 'b) -> 'b = <fun>
對我來說很有意義。 val f需要一個函數x,它接受一個'a類型的列表並返回'b類型的東西。然後f返回一個'b類型,因爲它只是調用x。 但是,一旦我們得到更多的論據,我會變得更加困惑。 # let g a b c = a b
我已經寫了一個函數,它將在列表中翻轉交替元素,但是我必須調用它,然後調用它的方法(我是ML的新手,所以我很抱歉如果我使用不正確的條款)。我寧願只調用該函數而不必調用其中的方法。這就是我現在要做的: (*3. Flip alternate elements in a list, if n = odd, element n remains at end*)
fun flip nil x = x
我想弄清楚如何在不同類型的輸入上實現摺疊功能。作爲一個示例,我將使用count函數作爲列表(不過,我有多個函數來實現此目的)。 假設一個int數組輸入(這應該與任何類型的列表的工作,雖然),我計數功能將是 val count = foldr (fn(x:int,y)=>y+1) 0 ;
val count = fn : int list -> int
不過,我試圖做一個計數功能,其中類型是
這是一個問題: 我們表示使用以下類型的多項式: datatype exp = Const of int | x | Add of exp * exp | Mult of exp * exp | Power of exp * int
例如,表達Add (Add (Mult (Const 3, Power (x, 2)), Mult (Const 6, x)), Const 1) 表示多項式3x2
例如下列代碼 fun swap (pr : int*bool) =
(#2 pr, #1 pr)
fun div_mod (x : int, y : int) =
(x div y, x mod y)
上述代碼已服用對(元組)作爲參數在所述第一交換功能,並且在功能div_mod採取兩個整數作爲參數..所以我的疑問是,ML如何知道我打電話給對(Tuple),而不是用兩個參數? 請幫幫我。