[Haskell-cafe] Is there a nicer way to do this?
qdunkan at gmail.com
Sun Jul 6 20:36:58 EDT 2008
On Sun, Jul 6, 2008 at 5:25 PM, John Hamilton <jlhamilton at gmail.com> wrote:
> On Sun, Jul 6, 2008 at 16:45, Michael Feathers <mfeathers at mindspring.com> wrote:
>> segment :: Int -> [a] -> [[a]]
>> segment 0 _ = 
>> segment _  = 
>> segment n x = (take n x) : segment n (drop n x)
>> I did a version of this which used splitAt but I wasn't sure whether it was
>> going to buy me anything re performance that would justify its ugliness.
> You can use
> segment n = takeWhile (not . null) . unfoldr (Just . splitAt n)
> I don't know how it compares in performance. It's from
Watch out for negative numbers, though.
More information about the Haskell-Cafe