ocaml不动点函数
所以我在ocaml上做一个赋值,我对如何编写一个函数fixpoint感到困惑,它应该比较一个函数和一个int x,fx,并像ffx,fffx一样递归地比较它们,直到两个连续的值相等,然后打印出值 我们应该使用之前编写的wwhile函数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
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周围加括号: