ocaml不动点函数

ocaml不动点函数,ocaml,Ocaml,所以我在ocaml上做一个赋值,我对如何编写一个函数fixpoint感到困惑,它应该比较一个函数和一个int x,fx,并像ffx,fffx一样递归地比较它们,直到两个连续的值相等,然后打印出值 我们应该使用之前编写的wwhile函数 let rec wwhile (f,b) = match f(b) with |(integer, boolean) -> if boolean == false then integer else wwhil

所以我在ocaml上做一个赋值,我对如何编写一个函数fixpoint感到困惑,它应该比较一个函数和一个int x,fx,并像ffx,fffx一样递归地比较它们,直到两个连续的值相等,然后打印出值

我们应该使用之前编写的wwhile函数

let rec wwhile (f,b) = match f(b) with
|(integer, boolean) -> if boolean == false then integer 
                       else wwhile (f, integer)
链接可以在这里找到


这是我一直坚持的固定点功能

如前所述,您不应该只有一个匹配案例

后,考虑以下内容:

为了避免无限循环,这将是相互测试 有两种情况:fx=x和fx!=x、 你可以在比赛中使用这个测试,但不仅仅是。 可以匹配两个表达式:

将值1、值2=值3与

|v1case1,v2vase1->。。。 |v1case2,v2case2->


我的功能正常,但这是你的家庭作业,所以你必须工作一点-

我认为家庭作业的通常规则是,你应该展示一些你尝试过的代码。没有什么可以评论的,如果不解决问题就很难提供帮助。假设您正确地显示了wwhile,我想说您的问题是要弄清楚函数f需要什么样的外观才能实现您想要的功能。布尔==false在两点上都不是一个好的表达式。1您应该使用=而不是==,除非您确实需要==,指针相等。2比较布尔值是多余的。请不要编写布尔值。当我们在编写布尔值时,不应该与只有一个大小写的表达式进行匹配。使用let integer,boolean=fb in。。。相反。@nlucaroni:请阅读[家庭作业]的标签说明。已经过了。将f应用于b时,不需要在b周围加括号: