
filter' :: (a -> Bool) -> [a] -> [a]
filter' f lst = helper lst []
    where helper [] aux     = aux
          helper (x:xs) aux
            | f x       = helper xs (x:aux)
            | otherwise = helper xs aux
            
data InfNumber a = MinusInfinity
                 | Number a