Yes, chop can be easily written in terms of unfoldr. But the chop function fits better with other existing list functions, like I tried to illustrate with my examples.
Henning,
>> I would like to propose the following function for inclusion in Data.List
>> chop :: (a -> (b, [a]) -> [a] -> [b]
>> chop _ [] = []
>> chop f as = b : chop f as'
>> where (b, as') = f as
> Is the difference between 'unfoldr' and 'chop' just the Maybe result type of f?Yes.
chop f = unfoldr g
where
g [] = Nothing
g as = Just (f as)
Cheers,
Stefan