2

我有一个名为 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

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

4

1 回答 1

1

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

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

为什么bounds1在使用之前有bounds1Accum

于 2013-04-19T15:58:00.327 回答