Generating all size-k consecutive subsets in Haskell
Each evaluation of length list will take time proportional to the length of the list, which will slow this down.

We know that there will be length xs - n + 1 sublists of xs of length n. We can use this to make the code much faster.

sublists n xs = take (length xs - n + 1) $ sublists' n xs
    where sublists' _ [] = [[]]
          sublists' n xs@(_:rest) = take n xs : sublists' n rest


For comparison, with

main = print $ sum $ map length $ sublists 2 [1 .. 100000]


I get the following timings on my machine, compiled with -O.

Original version:

$ time ./orig
199998

real    0m14.890s
user    0m0.015s
sys     0m0.015s


This version:

$ time ./new
199998

real    0m0.065s
user    0m0.015s
sys     0m0.015s