如何在 OCaml 中修改数据结构并 return 它?

How do I modify a data structure and return it in OCaml?

在辅助函数中,我正在进行模式匹配以修改数据结构。我想修改数据结构,然后 return 修改后的数据。在我的方法中,return 类型是 unit()。我需要它 return 修改后的 hash_table.

我试过了:

let helperfunction firstlist secondlist hash_table =  
    match(firstlist, secondlist) ->
        | (CUSTOMTYPE::tail, CUSTOMOBJA(a)::CUSTOMOBJB(b)::anotherTail) -> Hashtbl.add hash_table "key" (a+b); hash_table

还有,

let helperfunction firstlist secondlist hash_table =
 match(firstlist, secondlist) ->
     |(CUSTOMTYPE::tail, CUSTOMOBJA(a)::CUSTOMOBJB(b)::anotherTail) -> let aa = Hashtbl.add hash_table "key" (a+b); hash_table

None 其中的功能如我所愿。我需要的 python 类语言的功能是:

def helperfunction (HashMap hm, int ValueToBeAdded):
     hm.add("key", ValueToBeAdded)
     return hm

我是函数式编程的新手。

Hashtbl 是命令式(和可变的)数据结构,因此您不需要 return 它,但如果您愿意,可以。您的 Python 示例可以在 OCaml 中翻译成这样:

let helper_function hash_table value_to_be_added = 
  let () = Hashtbl.add hash_table "key" value_to_be_added in 
  hash_table

你的第二个例子很糟糕,但我没有发现第一个例子有任何问题(除了模式匹配的非穷尽性)。