List 在Ocaml中讨论的递归函数
我定义了一个类型和一个函数:List 在Ocaml中讨论的递归函数,list,function,recursion,ocaml,List,Function,Recursion,Ocaml,我定义了一个类型和一个函数: type element = ... let merge (x0: element) (x1: element): element * bool = ... merge返回的第二部分表示x0和x1是否可以合并。如果是,返回的第一部分是合并的结果,否则第一部分可以忽略 然后我想实现一个函数重构:元素列表->元素列表,只要列表中的任意两个元素都可以合并(我们用它们合并的结果替换这两个元素),合并的顺序就不重要了 我想这一定是一个递归函数,在这个阶段对我来说有点复杂,
type element = ...
let merge (x0: element) (x1: element): element * bool = ...
merge
返回的第二部分表示x0
和x1
是否可以合并。如果是,返回的第一部分是合并的结果,否则第一部分可以忽略
然后我想实现一个函数重构:元素列表->元素列表
,只要列表中的任意两个元素都可以合并(我们用它们合并的结果替换这两个元素),合并的顺序就不重要了
我想这一定是一个递归函数,在这个阶段对我来说有点复杂,有人能帮我吗
非常感谢好的,我可以发布一个解决方案,但这对你来说既不有趣,也没有太多的指导意义:)。相反,让我试着给你一些提示,如果你仍然感到口吃,我会尽力帮助你
- 事实上,正如Nathan所建议的,您的
函数应该返回merge
,这是返回函数可选结果的经典方法option(element)
- 要编写
我建议您从函数restructure
开始,该函数将尝试将merge\u into(res:element,elts:element list)
合并到elts
中。希望这比重组更容易res
- 如何使用
合并到
中来实现
重组
如果你还有问题,请随时告诉我。。。快乐编码!:) 您应该为
合并
功能使用内置的'a选项
类型。然后为结果返回None
或Some元素。