在函数内调用Helper函数 - Haskell

时间:2015-03-07 05:50:37

标签: haskell functional-programming

我有3个功能,第一个是

toList :: Tree -> [Integer]

第二个是

sumTree :: Tree -> Maybe Integer

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

treeSum :: Tree -> Maybe Integer

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

treeSum = sumTree (toList x)

但我的x不在范围内。

1 个答案:

答案 0 :(得分:1)

Haskell通过说Not in scope告诉你的是x在其他任何地方都没有定义。

你应该写一些类似的东西:

treeSum x = sumTree (toList x)

您将面临的问题是类型错误。 toList需要Tree并返回List IntegersumTree正在等待Tree,而不是Integer列表}。

说实话,你要做的事情并不是很清楚。

注意:您应该避免在代码中定义sumTreetreeSum,因为您会松开自己以及每个尝试阅读代码的人。