Ocaml循环函数

Ocaml循环函数,ocaml,Ocaml,我需要做一个函数,它把函数f和输入b作为输入,并调用函数b返回b',c'b'是一个结果,c'是一个布尔值。然后,只要c为true,函数就需要继续在b'上调用f 这是我写的: let rec wwhile (f,b) = match f b with | (a,c) -> if c then wwhile(f a,c) else a ;; 我的想法是,我想得到fb的元组结果并检查c是否为真,但我不确定使用模式匹配是实现这一点的最佳方法。这个函数也给了我一个语法错误,我不知道为什么 以下是一

我需要做一个函数,它把函数f和输入b作为输入,并调用函数b返回b',c'b'是一个结果,c'是一个布尔值。然后,只要c为true,函数就需要继续在b'上调用f

这是我写的:

let rec wwhile (f,b) = match f b with
| (a,c) -> if c then wwhile(f a,c) else a
;;
我的想法是,我想得到fb的元组结果并检查c是否为真,但我不确定使用模式匹配是实现这一点的最佳方法。这个函数也给了我一个语法错误,我不知道为什么

以下是一份正确的asnwer样本:

# let f x = let xx = x*x*x in (xx,xx<100);;
val f : int -> int * bool = fn
# wwhile (f,2);;
- : int = 512 

Ocaml具有按值调用语义。也许你应该考虑使条件参数赋予布尔函数,而不是布尔值。是的,我才意识到,在我看到这个之前,我迟钝的LoLuy应该定义函数,如让ReC而不是F B,而不是F,B的元组模式匹配。
let rec wwhile (f,b) = match f b with
| (a,c) -> if c then wwhile(f ,a) else a
;;