迭代列表并删除haskell中的元素

时间:2012-05-22 19:36:09

标签: haskell

我需要编写一个获取列表并返回新列表的函数。如果列表尾部有较小的元素,则通过删除元素创建新列表。例如: minimum [3, 2, 5, 2, 5]应该返回[2,2,5]

minimum (x : xs)
   | null xs
      = []
   | otherwise
      = let
         minelem (x : xs) n
            =
               if x < head(xs)
                  then drop n (x : xs) --how to go to the end of the list here? 
                  else --and here?
      in minimum (x : xs) 1

minimum _
   = []   

这是家庭作业的一部分。请帮助完成此功能。

1 个答案:

答案 0 :(得分:5)

我已经留下了一些细节供你填写。

minimum' []       = []                     -- base case
minimum' (x : xs) = case minimum' xs of    -- recursive case
    []       -> ...
    (y : ys) -> ...                        -- clue: none of the ys are smaller than y