On Sun, Jul 6, 2008 at 5:25 PM, John Hamilton <[EMAIL PROTECTED]> wrote: > On Sun, Jul 6, 2008 at 16:45, Michael Feathers <[EMAIL PROTECTED]> 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 > http://www.haskell.org/haskellwiki/Blow_your_mind
Watch out for negative numbers, though. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe