slice :: [a] -> Int -> Int -> [a] slice (x:xs) a b | a > 1 = slice xs (a-1) (b-1) | a <= 1 && b >= 1 = x:(slice xs (a-1) (b-1)) | otherwise = [] slice' xs i j = [x | (x,k)<- (zip xs [1..j]) , k >= i]