在函数内调用辅助函数 - Haskell

Calling Helper functions within functions - Haskell

我有3个函数,第一个是

toList :: Tree -> [Integer]

第二个是

sumTree :: Tree -> Maybe Integer

对树中的元素求和,过滤一些边缘情况。我的主要功能是

treeSum :: Tree -> Maybe Integer

我想在 Tree 的输入上调用 toList,然后在上一个调用的输出上调用 sumTree。我不知道如何优雅地将它组合在一起。我所做的是

treeSum = sumTree (toList x)

但我发现 x 不在范围内。

Haskell 通过说 Not in scope 告诉你的是 x 没有在别处定义。

你应该这样写:

treeSum x = sumTree (toList x)

您将面临的问题是类型错误。 toList 需要一个 Tree 和 returns 一个 IntegerListsumTree 正在等待 Tree,而不是列表Integer.

老实说,你想做什么不是很清楚。

注意:您应该避免在您的代码中同时定义 sumTreetreeSum,因为您会失去自己以及所有尝试阅读您的代码的人。