【发布时间】:2020-06-23 09:06:36
【问题描述】:
如果我在 Ocaml 函数中有一个或多个递归函数,我如何在不退出主函数的情况下调用它们,并将它们的值作为主函数的返回值? 我是 Ocaml 的新手,所以我会尝试更好地解释我...
如果我有:
let function =
let rec recursive1 = ...
...
let rec recursive2 = ...
...
我如何在function 中调用它们来告诉它“嘿,你看到这个递归函数了吗?现在调用它并获取它的值。”
因为我的问题是 Ocaml 作为我的函数的返回看到 Unit 而不是正确的返回。
我将在下面发布代码:
let change k v list_ =
let rec support k v list_ =
match list_ with
| [] -> []
| (i,value) :: tl -> if i = k
then (k,v) :: tl
else (i,value) :: support k v tl in
let inserted = support k v list_ in inserted
let () =
let k = [ (1,"ciao");(2,"Hola");(3,"Salut") ] in
change 2 "Aufwidersen" k
Change 将一个键、一个值和一个 (int * string )list 作为输入,并应返回相同的输入列表,但更改链接到所选 key 的值(如果在列表中)。
相反,support 做的是肮脏的工作。它构建一个新列表,当找到 k 时 i = k 它更改 value 并附加磁贴,关闭函数。
change 的返回是 unit,而应该是 (int * string) list。我认为是因为inserted 不被视为函数的返回。
【问题讨论】:
标签: functional-programming ocaml