gpt4 book ai didi

function - OCaml 中的递归函数引用?

转载 作者:行者123 更新时间:2023-12-02 19:29:28 24 4
gpt4 key购买 nike

今天我们了解了 SML 中的“结婚”,其中有类似的内容

val tempFunc = ref (fn k:int => true);
fun even x = if x = 0 then true else !tempFunc(x-1);
fun odd x = if x = 0 then false else even(x-1);
tempFunc := odd;

我正在使用 ocaml,它非常相似,但我只是在做同样的事情时遇到了麻烦。我发现最接近的是

let tempFunc {contents =x}=x;;

但我不太明白这一点,也不明白如何将 tempFunc 与另一个函数联系起来。任何帮助表示赞赏!

最佳答案

您的代码在 OCaml 中的直接翻译是:

let tempFunc = ref (fun k -> true)
let even x = if x = 0 then true else !tempFunc (x-1)
let odd x = if x = 0 then false else even (x-1)
let () = tempFunc := odd

执行此操作的惯用方法(在 SML 中也是如此)是使用递归函数:

let rec even x = if x = 0 then true  else odd  (x-1)
and odd x = if x = 0 then false else even (x-1)

关于function - OCaml 中的递归函数引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10222584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com