我已经定义了一个类型和一个函数:
type element = ...
let merge (x0: element) (x1: element): element * bool = ...
merge
返回的第二部分表示x0
和x1
是否可合并。如果是这样,返回的第一部分是合并的结果,否则第一部分可以被忽略。
然后我想实现一个函数restructure: element list -> element list
,只要列表的任何2个元素是可合并的(我们用它们合并的结果替换2个元素),它就会保持合并的顺序合并并不重要。
我想它必须是一个递归函数,在这个阶段对我来说有点复杂,有人可以帮忙吗?
非常感谢
答案 0 :(得分:2)
好的,我可以发布一个解决方案,但这对你来说既不好玩也不擅长:)。相反,让我尝试给出一些提示,如果你仍然被卡住,我会尝试提供更多帮助。
merge
函数应该返回option(element)
,这是返回函数可选结果的经典方法。restructure
,我建议您从函数merge_into(res : element, elts : element list)
开始,该函数会尝试将elts
合并到res
。希望这比restructure
更容易。restructure
实现merge_into
?如果您还有问题,请随时告诉我......编码快乐! :)