[Haskell-beginners] Better Code

Francesco Ariis fa-ml at ariis.it
Fri Jan 13 16:55:16 UTC 2017

On Fri, Jan 13, 2017 at 09:35:54PM +0530, Saqib Shamsi wrote:
> The problem that I wish to solve is to divide a (sored) list of integers
> into sublists such that each sublist contains numbers in consecutive
> sequence.
> For example,
> *Input:* [1,2,3,7,8,10,11,12]
> *Output:* [[1,2,3],[7,8],[10,11,12]]
> [...]
> However, I was wondering if there was a better way of doing this. Any help
> would be highly appreciated.

Hello Saquib,
    you could try using a 'trick' like this:

λ> zipWith (-) [1,2,3,7,8,10,11,12] (enumFrom 1)

Now you have an 'helper' list which can be glued to the first one
with zip

λ> zip [1,2,3,7,8,10,11,12] it

and now grouped by using `groupBy` in Data.List.

Does that help?

More information about the Beginners mailing list