0
字典是成對列表。任務是獲取字典並返回一對列表:鍵和值。使用遞歸累積列表時出現類型錯誤
我試着對字典進行迭代(使用遞歸),並在兩個列表中累積鍵和值,但是我得到一個讓我感到困惑的類型錯誤。
注意:我是不是尋找替代解決方案的任務。我想了解錯誤以及如何糾正錯誤。
下面是代碼:
let lists_of_dict dict =
let rec separate dict keys values =
match dict with
[] -> (keys, values)
| (k, v)::t -> separate t k::keys v::values
(* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *)
in
separate dict [] []
(下劃線部分是第5行的字符19-47)
以下是錯誤消息:
File "lod-problem.ml", line 5, characters 19-47:
Error: This expression has type 'a list
but an expression was expected of type 'b * 'c
我不能不要理解爲什麼Ocaml推導出這種類型,以及如何使它理解表達式的類型爲('a list * 'b list)
(如果我沒有弄錯)。
謝謝!我將來應該更加自由地使用parens:) – angus