Haskell在函数内调用函数

时间:2013-04-19 15:47:23

标签: haskell

我有一个名为bounds1Accum的函数。这个功能很棒

bounds1Accum ::  [Integer] -> Integer -> Integer -> (Integer, Integer)
bounds1Accum l min max = (minimum (min:l), maximum (max:l))

我遇到的问题是我需要另一个名为bounds1的函数,它只接受一个列表并返回一个最小最大对。该函数应该包围bounds1accum并检查首先查看传递给它的列表是否为空。如果列表为空,它将返回Nothing,否则它将返回调用bounds1Accum函数的结果。

我需要两个案例,而且我的签名是

bounds1 :: [l] -> Maybe(min,max)
bounds1 [] = Nothing (which I am unsure if this will be correct)

然后第二个案例是我难倒的地方 我最初有

bounds1 l  min max  = if null l then Nothing else Just $ bounds1 bounds1Accum min max

但这甚至没有编译,所以如果有人可以提供建议或其他方式,我可以看看这个问题,这将是伟大的。这是一个作业所以我不想要答案,但更多的是指导或帮助解决问题。 谢谢

1 个答案:

答案 0 :(得分:1)

在第二种情况下,您没有minmax作为参数。您必须从列表中获取这些值。

if是不必要的,因为你已经在第一种情况下处理了空列表。

为什么在使用bounds1之前有bounds1Accum